Implementé el ejemplo del sitio web de RabbitMQ: Ejemplo de RabbitMQ

Lo he ampliado para tener una aplicación con un botón para enviar un mensaje. Ahora inicié dos consumidores en dos computadoras diferentes. Cuando envío el mensaje, el primer mensaje se envía a la computadora1, luego el segundo mensaje se envía a la computadora2, el tercero a la computadora1 y así sucesivamente.

¿Por qué es esto y cómo puedo cambiar el comportamiento para enviar cada mensaje a cada consumidor?

6
GreenEyedAndy 15 dic. 2016 a las 12:26

2 respuestas

La mejor respuesta

Por qué es esto

Como señaló Yazan, los mensajes se consumen desde una sola cola de manera rotatoria. El comportamiento que está viendo es por diseño, lo que facilita la ampliación del número de consumidores para una cola determinada.

¿Cómo puedo cambiar el comportamiento para enviar cada mensaje a cada consumidor?

Para que cada consumidor reciba el mismo mensaje, debe crear una cola para cada consumidor y entregar el mismo mensaje a cada cola.

La forma más sencilla de hacer esto es utilizar un intercambio fanout. Esto enviará todos los mensajes a cada cola que esté vinculada al intercambio, ignorando por completo la clave de enrutamiento.

Si necesita más control sobre el enrutamiento, puede usar un intercambio topic o direct y administrar las claves de enrutamiento.

Sin embargo, sea cual sea el tipo de intercambio que elija, deberá tener una cola por consumidor y que cada mensaje se enrute a cada cola.

18
Derick Bailey 15 dic. 2016 a las 12:51

No puede, está controlado por el servidor comprobar Ronda -sección de envío de robots

Decide cuál es el turno del consumidor. No estoy seguro de si hay un conjunto de algoritmos entre los que pueda elegir, pero al final el servidor controlará esto (creo que el algoritmo de round robin es el predeterminado)

A menos que desee utilizar intercambios y claves de enrutamiento

3
Yazan 15 dic. 2016 a las 09:34