2012-09-26 14 views
13

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?

+0

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 –

+0

No lo escribí explícitamente, pero el sistema deberá ser autónomo sin la necesidad de un administrador externo. –

Respuesta

5

Creo que lo que dice es derecho, sino en el escenario 3.

Si los mensajes no deben perderse si un consumidor se desconecta entonces necesita colas duraderos y las colas no se pueden auto_delete'd.

Todo lo demás me parece correcto.

En el caso del escenario 2 también puede dejar que RabbitMQ genere automáticamente los nombres de las colas y luego dejar que esas colas se eliminen automáticamente una vez que el consumidor se desconecta.

+0

Muchas gracias :-)! –

Cuestiones relacionadas