Introducción: En RabbitMQ, todos los mensajes enviados por los productores son aceptados por Exchange, que luego los reenvía a la Cola para su almacenamiento según una política específica RabbitMQ ofrece cuatro tipos de intercambios: fanout, directo, temático y encabezado El modo de encabezado se usa menos en la práctica, y este artículo solo compara los tres primeros modos.
1. Intercambio directo
Cualquier mensaje enviado a Direct Exchange se reenvía a la Cola especificada en la RuedaClave.
1. En general, puedes usar el Exchange que viene con rabbitMQ:" (el nombre del Exchange es una cadena vacía, en adelante denominada Exchange por defecto).
2. En este modo, no es necesario realizar ninguna operación de enlace en Exchange
3. Se requiere una "RuedaClave" para la mensajería, que puede entenderse simplemente como el nombre de la cola a la que se debe enviar.
4. Si el nombre de la cola especificado en la Rueda Clave no existe en el vhost, el mensaje se elimina.
2. Intercambio de Fanout
Cualquier mensaje enviado al Fanout Exchange se reenvía a todas las colas vinculadas a ese intercambio.
1. Puede entenderse como un patrón de la tabla de enrutamiento
2. Este modo no requiere una Ruta Clave
3. Este modo requiere vincular Exchange a la Cola de antemano, un Exchange puede vincular múltiples colas y una cola puede vincularse a varios Exchanges.
4. Si el Exchange que recibió el mensaje no está vinculado a ninguna cola, el mensaje se elimina.
3. Intercambio de temas
Cualquier mensaje enviado al Topic Exchange se reenvía a todas las colas que se ocupen de los temas especificados en la Ruta
1. Este patrón es más complejo, en pocas palabras, cada cola tiene su propio tema de preocupación, todos los mensajes tienen un "título" (RuedaClave), y Exchange reenviará el mensaje a todas las colas que puedan coincidir perfectamente con la Ruta Clave del tema en cuestión.
2. Este modo requiere una RouteKey, quizás vinculando Exchange y Queue de antemano.
3. Al vincular, proporciona un tema que le importe a la cola, como "#.log.#" para indicar que la cola se preocupa por todos los mensajes relacionados con los registros (un mensaje con una Rueda de Ruta de "MQ.log.error" será reenviado a la cola).
4. "#" significa 0 o varias palabras clave, y "" significa una palabra clave. Por ejemplo, "log". Puede coincidir con "log.warn", pero no puede coincidir con "log.warn.timeout"; Pero "log.#" coincide con lo anterior.
5. De manera similar, si Exchange no encuentra una Cola que coincida con la RuedaClave, eliminará este mensaje.
|