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
+
+
+
+
+
+
+
+
+
+
+
+
+