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 +