Cómo agregar un consejo alrededor de RabbitListener
Preguntado y respondido en respuesta a https://stackoverflow.com/questions/60286491/set-mdc-properties-only-for-rabbitmq-events/60286827#comment124278519_60286827.
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
Pregunta: ¿Cómo puedo configurar mi aplicación Spring Boot para establecer propiedades MDC (Mapped Diagnostic Context) solo para eventos de RabbitMQ?
Respuesta:
Para establecer propiedades MDC solo para eventos de RabbitMQ en una aplicación Spring Boot utilizando Spring AMQP y Spring Rabbit, puedes crear un fabricante de contenedores de escucha personalizado que establezca las propiedades MDC antes de que el mensaje sea procesado por la escucha.
Aquí tienes un ejemplo de implementación del fabricante de contenedores de escucha personalizado:
En esta implementación, creamos un fabricante de contenedores de escucha personalizado extendiendo
SimpleRabbitListenerContainerFactory
y estableciendo las propiedades MDC utilizando el métodosetBeforeSendReplyPostProcessors
. El métodosetBeforeSendReplyPostProcessors
toma un objetoPostProcessor
que se llama antes de que el mensaje se envíe al servidor de RabbitMQ. En nuestra implementación, establecemos las propiedades MDCcorrelationId
ymessageId
a partir de las propiedades del mensaje.Una vez que hayas creado el fabricante de contenedores de escucha personalizado, puedes usarlo para crear contenedores de escucha de RabbitMQ. Las propiedades MDC solo se establecerán para esos escuchas.
En este ejemplo, creamos un escucha de RabbitMQ anotando un método con
@RabbitListener
. Especificamos el nombre de la cola y el fabricante de contenedores de escucha personalizado que creamos.Con esta implementación, cada vez que se recibe un mensaje de RabbitMQ, se llama al método
handleMessage
con las propiedades MDC establecidas según las propiedades del mensaje.