El patrón de enrutamiento de RabbitMQ es básicamente el mismo que el patrón de publicar/suscribir, con la diferencia de que el patrón de publicar/suscribir reenvía mensajes a todas las colas vinculadas, mientras que el patrón de enrutamiento reenvía mensajes a la cola basándose en la coincidencia de enrutamiento.

Desde una perspectiva de programación específica, la diferencia entre el patrón de enrutamiento y el patrón de publicar/suscribir radica en el tipo de intercambio utilizado. El patrón de enrutamiento utiliza el tipo Directo.

Diagrama de arquitectura

Patrón Directo

Explicación:

  • P representa el productor, C1 y C2 representan los consumidores, los cuadros en rojo representan colas, y X representa el intercambio.
  • El tipo de intercambio es directo.
  • Lógica de reenvío de mensajes de intercambio directo: compara la clave de enrutamiento en el mensaje con las claves de enrutamiento asociadas a todos los enlaces de este intercambio. Si son iguales, el mensaje se envía a la cola correspondiente a ese enlace.

Por ejemplo, en el diagrama anterior: La clave de enrutamiento para la cola Q1 es naranja, y las claves de enrutamiento para la cola Q2 son negra y verde. Al enviar un mensaje, si la clave de enrutamiento del mensaje es naranja, se reenviará a la cola Q1, y si la clave de enrutamiento del mensaje es negra o verde, se reenviará a la cola Q2.

Casos de uso

El patrón de enrutamiento es una extensión del patrón de publicar/suscribir, por lo que los casos de uso son similares al patrón de publicar/suscribir, con la diferencia de poder establecer condiciones de suscripción de mensajes.

Por ejemplo: En un sitio web de comercio electrónico, existen cuatro almacenes en China Oriental, China Meridional, China Septentrional y China Suroeste, cada uno de los cuales tiene desplegado un conjunto de sistemas de gestión de almacenes. Cuando un usuario realiza un pedido de compra, el almacén más cercano es responsable del envío.

Después de que un usuario realiza un pedido y se genera un mensaje de orden de compra, queremos reenviar el mensaje al sistema de gestión de almacén regional correspondiente para su procesamiento, lo cual puede lograrse utilizando el patrón de enrutamiento.

Las vinculaciones de claves de enrutamiento para las colas de entrega de los cuatro sistemas de gestión de almacenes son las siguientes:

  • China Oriental = este
  • China Septentrional = norte
  • China Meridional = sur
  • China Suroeste = oeste

Después de que un usuario realiza un pedido, determinamos a qué región pertenece la dirección del usuario, calculamos la clave de enrutamiento y luego enviamos el mensaje de pedido con la clave de enrutamiento. El intercambio directo de RabbitMQ lo reenviará a la cola correspondiente.