From 7d815b3a3ee4616ab19540c7ba22bb9e78991606 Mon Sep 17 00:00:00 2001 From: zyperch Date: Fri, 5 Jun 2026 18:35:23 -0300 Subject: [PATCH] Iniciado a implementacao do rabbit para enviar notificacoes para a fila inves de enviar direto para o DC. --- pom.xml | 11 +++++++++ .../duck_api/config/RabbitConfig.java | 23 ++++++++++++++++++ .../duck_api/entity/enums/QueueNames.java | 15 ++++++++++++ .../service/RabbitPublisherService.java | 7 ++++++ .../impl/RabbitPublisherServiceImpl.java | 24 +++++++++++++++++++ src/main/resources/application-dbg.properties | 8 ++++++- .../resources/application-prod.properties | 6 +++++ 7 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/main/java/br/com/stackpanel/duck_api/config/RabbitConfig.java create mode 100644 src/main/java/br/com/stackpanel/duck_api/entity/enums/QueueNames.java create mode 100644 src/main/java/br/com/stackpanel/duck_api/service/RabbitPublisherService.java create mode 100644 src/main/java/br/com/stackpanel/duck_api/service/impl/RabbitPublisherServiceImpl.java diff --git a/pom.xml b/pom.xml index c69a533..1e35edc 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,17 @@ 1.0.0 + + org.springframework.boot + spring-boot-starter-amqp + + + + org.springframework.boot + spring-boot-starter-amqp-test + test + + org.springframework.boot spring-boot-starter-data-jpa diff --git a/src/main/java/br/com/stackpanel/duck_api/config/RabbitConfig.java b/src/main/java/br/com/stackpanel/duck_api/config/RabbitConfig.java new file mode 100644 index 0000000..5b6e7f9 --- /dev/null +++ b/src/main/java/br/com/stackpanel/duck_api/config/RabbitConfig.java @@ -0,0 +1,23 @@ +package br.com.stackpanel.duck_api.config; + +import org.springframework.amqp.core.Queue; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_CAD; +import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR; + +@Configuration +public class RabbitConfig { + + @Bean + public Queue queueNotificationError() { + return new Queue(QUEUE_NOTIFICATION_ERROR.label, true); + } + + @Bean + public Queue queueNotificationCad() { + return new Queue(QUEUE_NOTIFICATION_CAD.label, true); + } + +} diff --git a/src/main/java/br/com/stackpanel/duck_api/entity/enums/QueueNames.java b/src/main/java/br/com/stackpanel/duck_api/entity/enums/QueueNames.java new file mode 100644 index 0000000..9571dae --- /dev/null +++ b/src/main/java/br/com/stackpanel/duck_api/entity/enums/QueueNames.java @@ -0,0 +1,15 @@ +package br.com.stackpanel.duck_api.entity.enums; + +public enum QueueNames { + + QUEUE_NOTIFICATION_ERROR("QUEUE_NOTIFICATION_ERROR"), + QUEUE_NOTIFICATION_CAD("QUEUE_NOTIFICATION_CAD"); + + + public final String label; + + private QueueNames(String label) { + this.label = label; + } + +} diff --git a/src/main/java/br/com/stackpanel/duck_api/service/RabbitPublisherService.java b/src/main/java/br/com/stackpanel/duck_api/service/RabbitPublisherService.java new file mode 100644 index 0000000..5c231b6 --- /dev/null +++ b/src/main/java/br/com/stackpanel/duck_api/service/RabbitPublisherService.java @@ -0,0 +1,7 @@ +package br.com.stackpanel.duck_api.service; + +public interface RabbitPublisherService { + + void sendNotificationCad(String notificationCad); + +} diff --git a/src/main/java/br/com/stackpanel/duck_api/service/impl/RabbitPublisherServiceImpl.java b/src/main/java/br/com/stackpanel/duck_api/service/impl/RabbitPublisherServiceImpl.java new file mode 100644 index 0000000..2304fe2 --- /dev/null +++ b/src/main/java/br/com/stackpanel/duck_api/service/impl/RabbitPublisherServiceImpl.java @@ -0,0 +1,24 @@ +package br.com.stackpanel.duck_api.service.impl; + +import br.com.stackpanel.duck_api.service.RabbitPublisherService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; + +import static br.com.stackpanel.duck_api.entity.enums.QueueNames.QUEUE_NOTIFICATION_ERROR; + +public class RabbitPublisherServiceImpl implements RabbitPublisherService { + + private static final Logger log = LoggerFactory.getLogger(RabbitPublisherServiceImpl.class); + private final RabbitTemplate rabbitTemplate; + + public RabbitPublisherServiceImpl(RabbitTemplate rabbitTemplate) { + this.rabbitTemplate = rabbitTemplate; + } + + @Override + public void sendNotificationCad(String notificationCad) { + log.info("Sending notification Cad: {}", notificationCad); + rabbitTemplate.convertAndSend(QUEUE_NOTIFICATION_ERROR.label, notificationCad); + } +} diff --git a/src/main/resources/application-dbg.properties b/src/main/resources/application-dbg.properties index 0e3e8a1..dfd8d98 100644 --- a/src/main/resources/application-dbg.properties +++ b/src/main/resources/application-dbg.properties @@ -5,4 +5,10 @@ spring.datasource.password=${db_pass} spring.datasource.username=${db_user} spring.datasource.driver-class-name=org.postgresql.Driver spring.jpa.hibernate.ddl-auto=update -spring.jpa.show-sql=true \ No newline at end of file +spring.jpa.show-sql=true + + +spring.rabbitmq.host=rabbit.stackpanel.com.br +spring.rabbitmq.port=5672 +spring.rabbitmq.username=${rabbit_username} +spring.rabbitmq.password=${rabbit_password} \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index a70abd7..4aa6d93 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -4,3 +4,9 @@ spring.datasource.url=${db_host:jdbc:postgresql://db.stackpanel.com.br:5432/nexu spring.datasource.password=${db_pass} spring.datasource.username=${db_user} spring.datasource.driver-class-name=org.postgresql.Driver + + +spring.rabbitmq.host=rabbit.stackpanel.com.br +spring.rabbitmq.port=5672 +spring.rabbitmq.username=${rabbit_username} +spring.rabbitmq.password=${rabbit_password} \ No newline at end of file