summaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java
diff options
context:
space:
mode:
authorRenu Kumari <renu.kumari@bell.ca>2021-08-19 13:11:00 -0400
committerRenu Kumari <renu.kumari@bell.ca>2021-08-23 11:52:48 -0400
commit0c5979fe48a43d5fbc680d026ea7ec866f60ed9e (patch)
treed48e4f76cecfe7524e6cc4cc649c5e062b5b92e4 /cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java
parentdb89e9c72388a7eb0a2132f7c25a213a925a0478 (diff)
Process data-updated event asynchronouslymr/526/123402/5
- notification is processed asynchronously using defined threadpool - updated docker-compose and readme to add dataspace filtering variables Issue-ID: CPS-526 Signed-off-by: Renu Kumari <renu.kumari@bell.ca> Change-Id: I7f827250f45cb9e3db2f060e9b3a089a4eaee05c
Diffstat (limited to 'cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java')
-rw-r--r--cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java b/cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java
new file mode 100644
index 000000000..52c3bbdbb
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/config/AsyncConfig.java
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Pantheon.tech
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.config;
+
+import javax.validation.constraints.Min;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.validation.annotation.Validated;
+
+@EnableAsync
+@Configuration
+@ConfigurationProperties("notification.async-executor")
+@Validated
+@Setter
+public class AsyncConfig {
+
+ @Min(0)
+ private int corePoolSize = 2;
+ @Min(2)
+ private int maxPoolSize = 10;
+ @Min(0)
+ private int queueCapacity = 2147483647;
+ private boolean waitForTasksToCompleteOnShutdown = true;
+ private String threadNamePrefix = "Async-";
+
+ /**
+ * Creates TaskExecutor for processing data-updated events.
+ *
+ * @return TaskExecutor
+ */
+ @Bean("notificationExecutor")
+ public TaskExecutor getThreadAsyncExecutorForNotification() {
+ final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ executor.setCorePoolSize(corePoolSize);
+ executor.setMaxPoolSize(maxPoolSize);
+ executor.setQueueCapacity(queueCapacity);
+ executor.setWaitForTasksToCompleteOnShutdown(waitForTasksToCompleteOnShutdown);
+ executor.setThreadNamePrefix(threadNamePrefix);
+ return executor;
+ }
+
+}