es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lugar central para la gestión de la vinculación de colas de RabbitMQ en una aplicación basada en microservicios.

Estoy trabajando en una aplicación basada en microservicios. Está compuesta por alrededor de 30 microservicios y algunos de ellos se comunican entre sí a través de RabbitMQ.

Estos servicios tienen nombres de exchanges, colas y claves de enrutamiento en su archivo de configuración (application.yml).
Todos los beans correspondientes (incluyendo los enlaces) se crean en una @Configuration.
Todos ellos se crean automáticamente al inicio del servicio.

Como es un proyecto de inicio, se caracteriza por muchos cambios en el diseño, renombramiento de exchanges, claves de enrutamiento, colas, etc.

Por lo tanto, sería genial tener un lugar central donde se puedan gestionar todos los enlaces necesarios.
De esta manera, solo tendrías que renombrar un exchange y/o una clave de enrutamiento en un solo lugar.
Otra ventaja es la transparencia: un archivo de texto contiene información sobre qué servicios dependen de qué exchanges.

La configuración de dicho componente de gestión podría verse así:

servicios:
    servicio1: s1
        enlace1:
            exchange: e1
            cola1: s1q1
            clave-de-enrutamiento: rk1
        enlace2:
            exchange: e1
            cola1: s1q2
            clave-de-enrutamiento: rk2
        ...
    servicio2: s2
        enlace1:
            exchange: e2
            cola1: s2q1
            clave-de-enrutamiento: rk3
        enlace2:
            exchange: e2
            cola1: s2q1
            clave-de-enrutamiento: rk4
        ...
    ...

Y la configuración de servicio1 solo podría contener nombres de colas:

config:
    cola1: s1q1
    cola2: s1q2
...

Los servicios solo crearían colas y el componente de gestión crearía exchanges y enlaces.

Estoy pensando en crear un servicio adicional cuyo único propósito sea la creación de enlaces.
Sin embargo, no estoy seguro de si no estaría reinventando la rueda.

¿Existe alguna utilidad (quizás un plugin de RabbitMQ) que solucione esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Spring-boot, RabbitMQ, message-queue, Spring-amqp y Rabbitmq-exchange, no tengo conocimiento de ninguna utilidad o plugin RabbitMQ existente que maneje la gestión de las asociaciones en una aplicación basada en microservicios, tal como se describe en los ejemplos de configuración proporcionados. Sin embargo, dada la naturaleza compleja de dicha aplicación, sería razonable crear un servicio dedicado que maneje la creación, gestión y monitoreo de las asociaciones entre los diversos microservicios. Este servicio podría diseñarse como un microservicio independiente o integrarse como parte de un microservicio existente, utilizando las bibliotecas y herramientas adecuadas de RabbitMQ. Al crear dicho servicio, los cambios en la configuración de los microservicios se pueden gestionar de manera centralizada, mejorando la transparencia y reduciendo la complejidad.

Comments are closed.