From 086bdc6d42060a077d9a175160f77aa1bb0593ab Mon Sep 17 00:00:00 2001 From: Cristian Silva Date: Thu, 20 Aug 2026 20:34:21 +0200 Subject: [PATCH] feat(UP-4637): migrate from spring-multirabbit to standard spring-boot-starter-amqp and removes spring-cloud-starter-bus-amqp Migrated RabbitMQ configuration and message handling from custom spring-multirabbit to the standard Spring Boot AMQP starter. This simplifies the queue infrastructure to target a single RabbitMQ connection and eliminates unnecessary overhead. Changes: - pom.xml: Added standard 'spring-boot-starter-amqp' and 'spring-boot-starter-validation' dependencies to replace 'spring-multirabbit' and 'spring-cloud-starter-bus-amqp'. - RabbitmqConfig.java: Removed 'Qualifier'-based bean customizations and multirabbit references. Reconfigured 'rabbitListenerContainerFactory' and 'rabbitTemplate' using standard ConnectionFactory and message converters. - RabbitmqRequestHandler.java: Switched 'ASYNC_CONTAINER_FACTORY' destination from the custom 'eventBus' to the standard 'rabbitListenerContainerFactory' to match the new AMQP configuration. --- .../docker/config/sauron-service.yml | 41 +++---------------- sauron-service/pom.xml | 20 ++++----- .../freenow/sauron/config/RabbitmqConfig.java | 18 ++++---- .../handler/impl/RabbitmqRequestHandler.java | 2 +- 4 files changed, 27 insertions(+), 54 deletions(-) diff --git a/sauron-service/docker/config/sauron-service.yml b/sauron-service/docker/config/sauron-service.yml index 4908c779..d1582128 100644 --- a/sauron-service/docker/config/sauron-service.yml +++ b/sauron-service/docker/config/sauron-service.yml @@ -36,27 +36,12 @@ management: # Spring configuration ################################################################# spring: - ################################################################# - # SpringConfigBus configuration - # Rabbitmq used to enable hot reloading of your configuration[1] - # Comment the block below and uncomment rabbitmq configuration - # to enable SpringConfigBus - # - # [1] https://www.baeldung.com/spring-cloud-bus - ################################################################# - autoconfigure: - exclude: org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration - cloud: - stream: - default: - consumer: - autoStartup: false -# rabbitmq: -# requested-heartbeat: 5 -# host: configbus.hostname -# port: 5672 -# username: sauron-service -# password: iamasecret + rabbitmq: + enabled: true + host: eventsbus.hostname + port: 5672 + username: sauron-service + password: iamasecret ################################################################# # Sauron Rabbitmq Request Handler @@ -68,20 +53,6 @@ spring: # [1] src/main/java/com/freenow/sauron/handler/impl/RabbitmqRequestHandler.java ################################################################# # enabled: true - ################################################################# - # When using Sauron Request Handler another Rabbitmq host can be used, - # different from the SpringConfigBus. In order to allow that, Sauron - # make usage of freenowtech/spring-multirabbit [1] - # - # [1] https://github.com/freenowtech/spring-multirabbit - ################################################################# -# multirabbitmq: -# connections: -# eventBus: -# host: eventsbus.hostname -# port: 5672 -# username: sauron-service -# password: iamasecret ################################################################# # Sauron configuration diff --git a/sauron-service/pom.xml b/sauron-service/pom.xml index 48663e03..c3a2c863 100644 --- a/sauron-service/pom.xml +++ b/sauron-service/pom.xml @@ -103,27 +103,27 @@ org.springframework.boot - spring-boot-starter-test - test + spring-boot-starter-amqp - - org.springframework.cloud - spring-cloud-starter-config + org.springframework.boot + spring-boot-starter-validation - org.springframework.cloud - spring-cloud-starter-bus-amqp + org.springframework.boot + spring-boot-starter-test + test + - com.free-now.multirabbit - spring-multirabbit - ${multirabbit.version} + org.springframework.cloud + spring-cloud-starter-config + com.free-now.sauron diff --git a/sauron-service/src/main/java/com/freenow/sauron/config/RabbitmqConfig.java b/sauron-service/src/main/java/com/freenow/sauron/config/RabbitmqConfig.java index 36757f18..3ac7a2c7 100644 --- a/sauron-service/src/main/java/com/freenow/sauron/config/RabbitmqConfig.java +++ b/sauron-service/src/main/java/com/freenow/sauron/config/RabbitmqConfig.java @@ -5,7 +5,7 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; -import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -24,22 +24,24 @@ public Queue sauronQueue() @Bean - public SimpleRabbitListenerContainerFactory eventBusPrefetchCount( - @Qualifier("eventBus") SimpleRabbitListenerContainerFactory eventBus, + public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory( + final ConnectionFactory connectionFactory, final Jackson2JsonMessageConverter converter) { - eventBus.setPrefetchCount(1); - eventBus.setMessageConverter(converter); - return eventBus; + final var factory = new SimpleRabbitListenerContainerFactory(); + factory.setConnectionFactory(connectionFactory); + factory.setPrefetchCount(1); + factory.setMessageConverter(converter); + return factory; } @Bean public RabbitTemplate rabbitTemplate( - final ConnectionFactory multiRabbitConnectionFactory, + final ConnectionFactory connectionFactory, final Jackson2JsonMessageConverter converter) { - final var rabbitTemplate = new RabbitTemplate(multiRabbitConnectionFactory); + final var rabbitTemplate = new RabbitTemplate(connectionFactory); rabbitTemplate.setMessageConverter(converter); return rabbitTemplate; } diff --git a/sauron-service/src/main/java/com/freenow/sauron/handler/impl/RabbitmqRequestHandler.java b/sauron-service/src/main/java/com/freenow/sauron/handler/impl/RabbitmqRequestHandler.java index 29dbc052..145991ec 100644 --- a/sauron-service/src/main/java/com/freenow/sauron/handler/impl/RabbitmqRequestHandler.java +++ b/sauron-service/src/main/java/com/freenow/sauron/handler/impl/RabbitmqRequestHandler.java @@ -18,7 +18,7 @@ @Setter public class RabbitmqRequestHandler implements RequestHandler { - private static final String ASYNC_CONTAINER_FACTORY = "eventBus"; + private static final String ASYNC_CONTAINER_FACTORY = "rabbitListenerContainerFactory"; private static final String LISTENER_ID = "sauron-consumer";