diff --git a/clearing-parent/backend-api/pom.xml b/clearing-parent/backend-api/pom.xml
index 0fe55529a..a50260658 100644
--- a/clearing-parent/backend-api/pom.xml
+++ b/clearing-parent/backend-api/pom.xml
@@ -37,6 +37,10 @@
ru.spcex.platform
platform-imdg-api-hazelcast-impl
+
+ org.apache.kafka
+ kafka-clients
+
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java
index 7eb81b6ac..152bc87e5 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java
@@ -5,6 +5,7 @@ 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.backendapi.config.element.BackendApiSettings;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
@@ -25,11 +26,11 @@ public class BackEndApiImdgConfig {
public ImdgProvider imdgProvider(
@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
- HazelcastSettings clientSetting
+ BackendApiSettings clientSetting
) {
return new HazelcastService(taskExecutorHazelcastClientInitializer,
taskExecutorIdGeneratorAwaiter,
- clientSetting);
+ clientSetting.getHazelcast());
}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HazelcastSettings.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HazelcastSettings.java
deleted file mode 100644
index d6e5de56c..000000000
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HazelcastSettings.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ru.spcex.clearing.backendapi.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.stereotype.Component;
-import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
-
-@Component
-@PropertySource("file:${spring.config.location}/application.properties")
-@ConfigurationProperties("backend-api.hazelcast")
-public class HazelcastSettings extends HazelcastClientParams {
-}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/KafkaConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/KafkaConfig.java
new file mode 100644
index 000000000..ee55cf976
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/KafkaConfig.java
@@ -0,0 +1,44 @@
+package ru.spcex.clearing.backendapi.config;
+
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.Producer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import ru.spcex.clearing.backendapi.config.element.BackendApiSettings;
+import ru.spcex.clearing.backendapi.config.element.KafkaSettings;
+
+import java.util.Properties;
+
+@Configuration
+public class KafkaConfig {
+
+ @Autowired
+ @Bean
+ public Producer createProducer(BackendApiSettings settings) {
+ KafkaSettings kafkaSettings = settings.getKafka();
+ Properties kafkaProps = new Properties();
+
+ //Assign localhost id
+ kafkaProps.put("bootstrap.servers", kafkaSettings.getBootstrapServers());
+
+ //Set acknowledgements for producer requests.
+ kafkaProps.put("acks", kafkaSettings.getAcks());
+
+ //If the request fails, the producer can automatically retry,
+ kafkaProps.put("retries", kafkaSettings.getRetries());
+
+ //Specify buffer size in config
+ kafkaProps.put("batch.size", kafkaSettings.getBatchSize());
+
+ //Reduce the no of requests less than 0
+ kafkaProps.put("linger.ms", kafkaSettings.getLingerMs());
+ //The buffer.memory controls the total amount of memory available to the producer for buffering.
+ kafkaProps.put("buffer.memory", kafkaSettings.getBufferMemory());
+ kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+ kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+
+ return new KafkaProducer<>(kafkaProps);
+ }
+
+}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
similarity index 51%
rename from clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java
rename to clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
index 64f8926e9..4f521ef5f 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackendApiSettings.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
@@ -1,13 +1,34 @@
-package ru.spcex.clearing.backendapi.config;
+package ru.spcex.clearing.backendapi.config.element;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
+import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
@Component
@PropertySource("file:${spring.config.location}/application.properties")
@ConfigurationProperties("backend-api")
public class BackendApiSettings {
+ private HazelcastClientParams hazelcast;
+ private KafkaSettings kafka;
+ private String exampleSetting;
+
+ public HazelcastClientParams getHazelcast() {
+ return hazelcast;
+ }
+
+ public void setHazelcast(HazelcastClientParams hazelcast) {
+ this.hazelcast = hazelcast;
+ }
+
+ public KafkaSettings getKafka() {
+ return kafka;
+ }
+
+ public void setKafka(KafkaSettings kafka) {
+ this.kafka = kafka;
+ }
+
public String getExampleSetting() {
return exampleSetting;
}
@@ -15,6 +36,4 @@ public class BackendApiSettings {
public void setExampleSetting(String exampleSetting) {
this.exampleSetting = exampleSetting;
}
-
- private String exampleSetting;
}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/KafkaSettings.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/KafkaSettings.java
new file mode 100644
index 000000000..dbfacdb87
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/KafkaSettings.java
@@ -0,0 +1,58 @@
+package ru.spcex.clearing.backendapi.config.element;
+
+public class KafkaSettings {
+ private String bootstrapServers;
+ private String acks;
+ private Integer retries;
+ private Integer batchSize;
+ private Integer lingerMs;
+ private Integer bufferMemory;
+
+ public String getBootstrapServers() {
+ return bootstrapServers;
+ }
+
+ public void setBootstrapServers(String bootstrapServers) {
+ this.bootstrapServers = bootstrapServers;
+ }
+
+ public String getAcks() {
+ return acks;
+ }
+
+ public void setAcks(String acks) {
+ this.acks = acks;
+ }
+
+ public Integer getRetries() {
+ return retries;
+ }
+
+ public void setRetries(Integer retries) {
+ this.retries = retries;
+ }
+
+ public Integer getBatchSize() {
+ return batchSize;
+ }
+
+ public void setBatchSize(Integer batchSize) {
+ this.batchSize = batchSize;
+ }
+
+ public Integer getLingerMs() {
+ return lingerMs;
+ }
+
+ public void setLingerMs(Integer lingerMs) {
+ this.lingerMs = lingerMs;
+ }
+
+ public Integer getBufferMemory() {
+ return bufferMemory;
+ }
+
+ public void setBufferMemory(Integer bufferMemory) {
+ this.bufferMemory = bufferMemory;
+ }
+}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java
index e24113248..498e1c646 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/DefaultController.java
@@ -9,9 +9,9 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
-import ru.spcex.clearing.backendapi.config.BackendApiSettings;
+import ru.spcex.clearing.backendapi.config.element.BackendApiSettings;
-@Controller("/")
+@Controller
public class DefaultController implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/BasicSpcexResponse.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/BasicSpcexResponse.java
new file mode 100644
index 000000000..78cc506f0
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/BasicSpcexResponse.java
@@ -0,0 +1,22 @@
+package ru.spcex.clearing.backendapi.controller.response;
+
+public class BasicSpcexResponse {
+ private int code;
+ private String message;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/LoginController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java
similarity index 97%
rename from clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/LoginController.java
rename to clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java
index ac08928d6..b12d59ad4 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/LoginController.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java
@@ -1,4 +1,4 @@
-package ru.spcex.clearing.backendapi.controller;
+package ru.spcex.clearing.backendapi.security;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
-import ru.spcex.clearing.backendapi.security.TokenRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/RestTemplateConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java
similarity index 95%
rename from clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/RestTemplateConfig.java
rename to clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java
index 5ca0bb367..9d738a5b4 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/RestTemplateConfig.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java
@@ -1,4 +1,4 @@
-package ru.spcex.clearing.backendapi.config;
+package ru.spcex.clearing.backendapi.security;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
diff --git a/clearing-parent/backend-api/src/main/resources/application.properties b/clearing-parent/backend-api/src/main/resources/application.properties
index e21d692d6..934e3d6b5 100644
--- a/clearing-parent/backend-api/src/main/resources/application.properties
+++ b/clearing-parent/backend-api/src/main/resources/application.properties
@@ -3,10 +3,18 @@ server.servlet.context-path=/backend-api
spring.main.web-application-type=servlet
backend-api.example-setting=test
+
backend-api.hazelcast.cluster-members=127.0.0.1
backend-api.hazelcast.login=dev
backend-api.hazelcast.password=dev-pass
+backend-api.kafka.bootstrap-servers=localhost:9092
+backend-api.kafka.acks=all
+backend-api.kafka.retries=0
+backend-api.kafka.batch-size=16384
+backend-api.kafka.linger-ms=1
+backend-api.kafka.buffer-memory=33554432
+
##keycloak
##keycloak.auth-server-url=http://10.200.200.147:8080/
diff --git a/clearing-parent/backend-api/src/main/resources/messages/response.properties b/clearing-parent/backend-api/src/main/resources/messages/response.properties
new file mode 100644
index 000000000..9dd528c94
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/resources/messages/response.properties
@@ -0,0 +1 @@
+backend-api.response.test1=This is response example 1.
\ No newline at end of file
diff --git a/clearing-parent/backend-api/src/main/resources/messages/response_ru.properties b/clearing-parent/backend-api/src/main/resources/messages/response_ru.properties
new file mode 100644
index 000000000..49b9adf1d
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/resources/messages/response_ru.properties
@@ -0,0 +1 @@
+backend-api.response.test1=Это пример ответа 1.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f7aa5a677..2dcaca762 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,6 +38,7 @@
3.12.4
1.7.33
1.2.10
+ 2.8.1
@@ -110,6 +111,16 @@
c3p0
0.9.5.2
+
+ org.apache.kafka
+ kafka-clients
+ ${external_libraries.kafka.version}
+
+
+ org.springframework.kafka
+ spring-kafka
+ 2.8.1
+