Al usar RabbitMQ para enviar mensajes, básicamente tiene intercambios, colas y enlaces. Entendí su idea y cómo se relacionan entre sí, pero no estoy seguro de quién establece qué.RabbitMQ: intercambios, colas y enlaces: ¿quién configura qué?
Básicamente, tengo tres escenarios en mi aplicación.
Escenario 1: Un editor, varios procesos de trabajo
Lo que queremos lograr es uno de los componentes que envía mensajes a una cola, y habrá varios procesos de trabajo que manejan artículos en esa cola. Esto me parece bastante fácil. La configuración es la siguiente:
- de cambio: 1 intercambio con el tipo 'directo'
- cola: 1 cola de
- Encuadernación: La cola está vinculada al intercambio
Cada vez que un mensaje es enviado al intercambio, se entrega a la cola y los procesos de trabajo obtienen sus tareas.
Todo será duradero.
Entonces, ¿quién configura qué? En mi opinión:
- Productor crea intercambio
- Productor crea cola (ya que actualmente puede haber ningún proceso de trabajo que se ejecutan, y el mensaje se perdería de otro modo, si no había cola)
- Productor hace la unión de la cola para el intercambio
- consumidores simplemente escuchar en la cola
derecho?
Escenario 2: Un editor, varios abonados, los mensajes volátiles
El segundo escenario es bastante diferente. Básicamente, es un escenario de pub/sub donde cada mensaje se envía a cada cliente que está escuchando actualmente. Si un cliente se desconecta, ya no recibe mensajes y no están guardados en ningún lado. Esto significa que la siguiente configuración:
- Exchange: 1 de cambio con el tipo 'fanout'
- Queue: n colas, una para cada consumidor
- Encuadernación: Cada cola necesita ser unido a la bolsa de
Entonces, ¿quién configura qué?En mi opinión:
- Productor crea intercambio
- Consumidor crea cola (ya que es su propia cola, y el productor no puede conocer todo el que esté interesado en los mensajes)
- Consumidor crea la unión por su cola para el intercambio de los consumidores
- escucha a su cola
derecho?
Escenario 3: Un editor, varios abonados, los mensajes duraderos
Básicamente lo mismo que el escenario 2, pero los mensajes no debería perderse si un consumidor se queda sin conexión. En mi opinión, esto no debería cambiar nada, ¿no?
Hay una tercera persona disponible para hacer la configuración: un administrador externo. Consulte esta respuesta a otra pregunta para obtener más información: http://stackoverflow.com/questions/6148381/rabbitmq-persistent-message-with-topic-echange/6155733#6155733 –
No lo escribí explícitamente, pero el sistema deberá ser autónomo sin la necesidad de un administrador externo. –