From 9a3e6565cce36da74b6c1320b0e9c79a33ce3a72 Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Fri, 18 Apr 2025 15:50:03 +0300 Subject: [PATCH] Revert "SUPPORT-9115: Fix" This reverts commit fe1b79202c629ba5029bec09f217790c5efee143. --- .../kafka/ErvuDirectoriesListener.java | 48 ++++++++++++++ .../kafka/KafkaConsumerInitializer.java | 27 ++++++++ .../service/ErvuDirectoriesService.java | 64 +------------------ 3 files changed, 78 insertions(+), 61 deletions(-) create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/kafka/ErvuDirectoriesListener.java create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/kafka/KafkaConsumerInitializer.java diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/kafka/ErvuDirectoriesListener.java b/backend/src/main/java/ru/micord/ervu/account_applications/kafka/ErvuDirectoriesListener.java new file mode 100644 index 00000000..ab690889 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/kafka/ErvuDirectoriesListener.java @@ -0,0 +1,48 @@ +package ru.micord.ervu.account_applications.kafka; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Component; +import ru.micord.ervu.account_applications.service.ErvuDirectoriesService; + +/** + * @author Eduard Tihomirov + */ +@Component +public class ErvuDirectoriesListener { + + @Autowired + private ErvuDirectoriesService ervuDirectoriesService; + + @KafkaListener(id = "${kafka.domain.group.id}", topics = "${kafka.domain.reconciliation}", + autoStartup = "false") + public void listenKafkaDomain(String kafkaMessage) { + ervuDirectoriesService.upsertKafkaDomainMessage(kafkaMessage); + } + + @KafkaListener(id = "${kafka.role.group.id}", topics = "${kafka.role.reconciliation}", + autoStartup = "false") + public void listenKafkaRole(String kafkaMessage) { + ervuDirectoriesService.upsertKafkaRoleMessage(kafkaMessage); + } +// Пока не заведены, обещают в будущих апдейтах создать +// @KafkaListener(id = "${kafka.role.updated.group.id}", topics = "${kafka.role.updated}") +// public void listenKafkaRoleUpdated(String kafkaMessage) { +// ervuDirectoriesService.upsertKafkaRoleMessage(kafkaMessage); +// } + + // @KafkaListener(id = "${kafka.role.created.group.id}", topics = "${kafka.role.created}") +// public void listenKafkaRoleUpdated(String kafkaMessage) { +// ervuDirectoriesService.upsertKafkaRoleMessage(kafkaMessage); +// } + + @KafkaListener(id = "${kafka.domain.updated.group.id}", topics = "${kafka.domain.updated}") + public void listenKafkaDomainUpdated(String kafkaMessage) { + ervuDirectoriesService.upsertKafkaDomainMessage(kafkaMessage); + } + + @KafkaListener(id = "${kafka.domain.created.group.id}", topics = "${kafka.domain.created}") + public void listenKafkaDomainCreated(String kafkaMessage) { + ervuDirectoriesService.upsertKafkaDomainMessage(kafkaMessage); + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/kafka/KafkaConsumerInitializer.java b/backend/src/main/java/ru/micord/ervu/account_applications/kafka/KafkaConsumerInitializer.java new file mode 100644 index 00000000..453cbe1d --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/kafka/KafkaConsumerInitializer.java @@ -0,0 +1,27 @@ +package ru.micord.ervu.account_applications.kafka; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.kafka.config.KafkaListenerEndpointRegistry; +import org.springframework.kafka.listener.MessageListenerContainer; +import org.springframework.stereotype.Component; + +/** + * @author Eduard Tihomirov + */ +@Component +@DependsOn("ervuDirectoriesListener") +public class KafkaConsumerInitializer { + @Value("${kafka.domain.group.id}") + private String domainGroupId; + + @Value("${kafka.role.group.id}") + private String roleGroupId; + + public KafkaConsumerInitializer(KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry) { + MessageListenerContainer listenerContainerDomain = kafkaListenerEndpointRegistry.getListenerContainer(domainGroupId); + MessageListenerContainer listenerContainerRole = kafkaListenerEndpointRegistry.getListenerContainer(roleGroupId); + listenerContainerDomain.start(); + listenerContainerRole.start(); + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/service/ErvuDirectoriesService.java b/backend/src/main/java/ru/micord/ervu/account_applications/service/ErvuDirectoriesService.java index a9197259..1ebd84ec 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/service/ErvuDirectoriesService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/service/ErvuDirectoriesService.java @@ -9,8 +9,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import javax.annotation.PostConstruct; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -24,9 +22,6 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.kafka.config.KafkaListenerEndpointRegistry; -import org.springframework.kafka.listener.MessageListenerContainer; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; @@ -39,7 +34,7 @@ import ru.micord.ervu.account_applications.model.RoleResponse; * @author Eduard Tihomirov */ @Service -@DependsOn("liquibase") +@DependsOn({"liquibase", "ervuDirectoriesListener"}) public class ErvuDirectoriesService { private static final Logger LOGGER = LoggerFactory.getLogger( MethodHandles.lookup().lookupClass()); @@ -49,67 +44,12 @@ public class ErvuDirectoriesService { private String ervuDirectories; @Value("${ervu.admin.role:gomu_supervisor, system_administrator, security_administrator}") private String ervuAdminRole; - @Value("${load.directories:true}") - private Boolean loadDirectories; - @Value("${kafka.domain.group.id}") - private String domainGroupId; - @Value("${kafka.role.group.id}") - private String roleGroupId; @Autowired private RestTemplate restTemplate; @Autowired private ErvuDirectoriesDaoService ervuDirectoriesDaoService; @Autowired private ObjectMapper objectMapper; - @Autowired - private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry; - - @PostConstruct - public void init() { - MessageListenerContainer listenerContainerDomain = kafkaListenerEndpointRegistry.getListenerContainer(domainGroupId); - MessageListenerContainer listenerContainerRole = kafkaListenerEndpointRegistry.getListenerContainer(roleGroupId); - listenerContainerDomain.start(); - listenerContainerRole.start(); - if (loadDirectories) { - new Thread(this::updateDirectories).start(); - } - } - - @KafkaListener(id = "${kafka.domain.group.id}", topics = "${kafka.domain.reconciliation}", - autoStartup = "false") - @Transactional - public void listenKafkaDomain(String kafkaMessage) { - upsertKafkaDomainMessage(kafkaMessage); - } - - @KafkaListener(id = "${kafka.role.group.id}", topics = "${kafka.role.reconciliation}", - autoStartup = "false") - @Transactional - public void listenKafkaRole(String kafkaMessage) { - upsertKafkaRoleMessage(kafkaMessage); - } -// Пока не заведены, обещают в будущих апдейтах создать -// @KafkaListener(id = "${kafka.role.updated.group.id}", topics = "${kafka.role.updated}") -// public void listenKafkaRoleUpdated(String kafkaMessage) { -// ervuDirectoriesService.upsertKafkaRoleMessage(kafkaMessage); -// } - - // @KafkaListener(id = "${kafka.role.created.group.id}", topics = "${kafka.role.created}") -// public void listenKafkaRoleUpdated(String kafkaMessage) { -// ervuDirectoriesService.upsertKafkaRoleMessage(kafkaMessage); -// } - - @KafkaListener(id = "${kafka.domain.updated.group.id}", topics = "${kafka.domain.updated}") - @Transactional - public void listenKafkaDomainUpdated(String kafkaMessage) { - upsertKafkaDomainMessage(kafkaMessage); - } - - @KafkaListener(id = "${kafka.domain.created.group.id}", topics = "${kafka.domain.created}") - @Transactional - public void listenKafkaDomainCreated(String kafkaMessage) { - upsertKafkaDomainMessage(kafkaMessage); - } @Caching(evict = { @@ -141,6 +81,7 @@ public class ErvuDirectoriesService { } + @Transactional public void upsertKafkaDomainMessage(String kafkaMessage) { RecruitmentResponse[] recruitmentResponses; try { @@ -154,6 +95,7 @@ public class ErvuDirectoriesService { } } + @Transactional public void upsertKafkaRoleMessage(String kafkaMessage) { RoleResponse[] roleResponses; try {