From b1b216a647dfa0a59351d05bd6fe37bf55126f97 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 23 Jan 2023 13:27:05 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-88 --- registry-service default architecture prepared --- clearing-parent/pom.xml | 1 + clearing-parent/registry-service/pom.xml | 70 +++++++++++++++++++ .../registry/RegistryServiceApplication.java | 12 ++++ .../clearing/registry/config/KafkaConfig.java | 29 ++++++++ .../config/RegistryServiceImdgConfig.java | 47 +++++++++++++ .../settings/RegistryServiceSettings.java | 41 +++++++++++ .../src/main/resources/application.properties | 17 +++++ .../src/main/resources/logback.xml | 38 ++++++++++ 8 files changed, 255 insertions(+) create mode 100644 clearing-parent/registry-service/pom.xml create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/KafkaConfig.java create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/RegistryServiceImdgConfig.java create mode 100644 clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java create mode 100644 clearing-parent/registry-service/src/main/resources/application.properties create mode 100644 clearing-parent/registry-service/src/main/resources/logback.xml diff --git a/clearing-parent/pom.xml b/clearing-parent/pom.xml index 85fb2a0a6..06fb06d46 100644 --- a/clearing-parent/pom.xml +++ b/clearing-parent/pom.xml @@ -31,6 +31,7 @@ balance-service scheduler-service clearing-service + registry-service diff --git a/clearing-parent/registry-service/pom.xml b/clearing-parent/registry-service/pom.xml new file mode 100644 index 000000000..9f685381f --- /dev/null +++ b/clearing-parent/registry-service/pom.xml @@ -0,0 +1,70 @@ + + + + clearing-parent + ru.spcex.clearing + SPCEX-1.0.0.0 + + 4.0.0 + + registry-service + + + 17 + 17 + + + + + ru.spcex.platform + platform-messaging + + + ru.spcex.platform + platform-enum + + + ru.spcex.platform + platform-imdg-api-hazelcast-impl + + + ru.spcex.clearing + classes + + + org.springframework.boot + spring-boot-starter + + + + + + + src/main/resources + + application.properties + + false + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + ${project.artifactId} + + + + + + \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java new file mode 100644 index 000000000..5f596d2bd --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java @@ -0,0 +1,12 @@ +package ru.spcex.clearing.registry; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class RegistryServiceApplication { + public static void main(String[] args) { + SpringApplication springApplication = new SpringApplication(RegistryServiceApplication.class); + springApplication.run(args); + } +} diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/KafkaConfig.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/KafkaConfig.java new file mode 100644 index 000000000..30c26317b --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/KafkaConfig.java @@ -0,0 +1,29 @@ +package ru.spcex.clearing.registry.config; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory; +import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory; +import ru.spcex.clearing.registry.config.settings.RegistryServiceSettings; + +@Configuration +public class KafkaConfig { + @Autowired + @Bean + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public Consumer createConsumer(RegistryServiceSettings settings) { + return KafkaConsumerFactory.consumer(settings.getKafkaConsumer()); + } + + @Autowired + @Bean + public Producer createProducer(RegistryServiceSettings settings) { + return KafkaProducerFactory.producer(settings.getKafkaProducer()); + } + +} diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/RegistryServiceImdgConfig.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/RegistryServiceImdgConfig.java new file mode 100644 index 000000000..a9c630a41 --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/RegistryServiceImdgConfig.java @@ -0,0 +1,47 @@ +package ru.spcex.clearing.registry.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import ru.spcex.clearing.registry.config.settings.RegistryServiceSettings; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +@Configuration +public class RegistryServiceImdgConfig { + private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) { + ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor(); + if (maxPoolSz > 2) { + pool.setKeepAliveSeconds(60); + pool.setAllowCoreThreadTimeOut(true); + } + pool.setCorePoolSize(maxPoolSz); + pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion); + return pool; + } + + @Bean(name = "taskExecutorHazelcastClientInitializer") + public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() { + return createThreadPoolTaskExecutor(1, true); + } + + @Bean(name = "taskExecutorIdGeneratorAwaiter") + public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() { + return createThreadPoolTaskExecutor(1, false); + } + + @Autowired + @Bean + public ImdgProvider imdgProvider( + @Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + RegistryServiceSettings settings + ) { + return new HazelcastService(taskExecutorHazelcastClientInitializer, + taskExecutorIdGeneratorAwaiter, + settings.getHazelcast()); + } + +} diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java new file mode 100644 index 000000000..a69f2cea0 --- /dev/null +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/config/settings/RegistryServiceSettings.java @@ -0,0 +1,41 @@ +package ru.spcex.clearing.registry.config.settings; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; +import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; +import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; + +@Component +@PropertySource("file:${spring.config.location}/application.properties") +@ConfigurationProperties("utility-service") +public class RegistryServiceSettings { + private HazelcastClientParams hazelcast; + private KafkaConsumerSettings kafkaConsumer; + private KafkaProducerSettings kafkaProducer; + + public HazelcastClientParams getHazelcast() { + return hazelcast; + } + + public void setHazelcast(HazelcastClientParams hazelcast) { + this.hazelcast = hazelcast; + } + + public KafkaConsumerSettings getKafkaConsumer() { + return kafkaConsumer; + } + + public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { + this.kafkaConsumer = kafkaConsumer; + } + + public KafkaProducerSettings getKafkaProducer() { + return kafkaProducer; + } + + public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { + this.kafkaProducer = kafkaProducer; + } +} diff --git a/clearing-parent/registry-service/src/main/resources/application.properties b/clearing-parent/registry-service/src/main/resources/application.properties new file mode 100644 index 000000000..f0eee0ce8 --- /dev/null +++ b/clearing-parent/registry-service/src/main/resources/application.properties @@ -0,0 +1,17 @@ +spring.main.web-application-type=none +registry-service.hazelcast.cluster-members=127.0.0.1:5701 +registry-service.hazelcast.login=dev +registry-service.hazelcast.password=dev-pass +registry-service.kafka-consumer.bootstrap-servers=localhost:9092 +registry-service.kafka-consumer.group-id=dev-group-registry-service +registry-service.kafka-consumer.enable-auto-commit=true +registry-service.kafka-consumer.session-timeout-ms=30000 +registry-service.kafka-consumer.auto-offset-reset=latest +registry-service.kafka-consumer.linger-ms=1 +registry-service.kafka-consumer.buffer-memory=33554432 +registry-service.kafka-producer.bootstrap-servers=localhost:9092 +registry-service.kafka-producer.acks=all +registry-service.kafka-producer.retries=0 +registry-service.kafka-producer.batch-size=16384 +registry-service.kafka-producer.linger-ms=1 +registry-service.kafka-producer.buffer-memory=33554432 \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/resources/logback.xml b/clearing-parent/registry-service/src/main/resources/logback.xml new file mode 100644 index 000000000..e3e8a4454 --- /dev/null +++ b/clearing-parent/registry-service/src/main/resources/logback.xml @@ -0,0 +1,38 @@ + + + + + + %date{HH:mm:ss.SSS} [%thread] %-5level %class{0}:%line - %message%n + utf-8 + + + + ./logs/utility-service.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{0}:%msg%n + utf8 + + + + ./logs/utility-service.%i.log + + 1 + 10 + + + 500MB + + + + + + + + + + + + +