El modo de tema de RabbitMQ es similar al modo de enrutamiento, pero la diferencia radica en que la coincidencia de enrutamiento del modo de tema admite coincidencias difusas con comodines, mientras que el modo de enrutamiento solo admite coincidencias exactas.
Diagrama de arquitectura
Explicación:
- P representa el productor, X representa el intercambio, y las colas rojas Q1, Q2 representan las colas, C1, C2 representan los consumidores.
- El tipo de intercambio es tema.
- Lógica de reenvío de mensajes de intercambio de tema: Hace coincidir la clave de enrutamiento en el mensaje con las claves de enrutamiento asociadas con todos los enlaces del Intercambio a través de coincidencia difusa, y si hay una coincidencia, envía el mensaje a la cola vinculada.
Consejo: La diferencia entre el modo de tema y el modo directo radica en si la coincidencia de la clave de enrutamiento admite coincidencias difusas con comodines, todo lo demás es igual.
Los comodines admitidos por el modo de tema son los siguientes:
-
#
(almohadilla) hace coincidir una o más palabras -
*
(asterisco) hace coincidir solo una palabra
Por ejemplo:
La clave de enrutamiento vinculada a la cola Q1 = *.orange.*
La clave de enrutamiento vinculada a la cola Q2 = *.*.rabbit
y lazy.#
Si la clave de enrutamiento del mensaje es "quick.orange.rabbit", coincidirá con las colas Q1 y Q2.
Consejo: Si la clave de enrutamiento no coincide con ninguna cola, el mensaje se descartará. Si la clave de enrutamiento está vacía, funcionará de la misma manera que el modo de difusión y reenviará el mensaje directamente a todas las colas.
Caso de uso
Al igual que el modo de enrutamiento, la diferencia radica en la flexibilidad de las condiciones de suscripción, específicamente en las reglas de coincidencia más flexibles para la clave de enrutamiento.