2011-11-21 12 views
5

Estoy implementando un sistema de mensajes donde los programas externos llamados agentes pueden comunicarse a través de los productores de ZeroMq. Entonces, cada vez que ocurre un evento de interés, el agente envía un mensaje a ZeroMq.ZeroMQ pipeline pattern

Me interesa implementar este patrón de canalización.

Encontré algunos ejemplos (Ventilador-Trabajador-Administrador de resultados), pero el componente Ventilador crea un punto final para aceptar conexiones del trabajador, y luego envía todos los mensajes en lote.

Mi situación es bastante diferente. El "agente" se conecta cada vez que se necesita enviar un evento; no espera las conexiones de los trabajadores, por lo que me pregunto si esto es posible. Además, el hecho importante es que los mensajes deben procesarse para que se envíen.

Respuesta

2

Debe mezclar los patrones para lograr su solución. Creo que debería ser un specialized broker que ejemplifica REP agentes colectores para agentes REQ reales. Esos agentes colectores deben encargarse de ordenar antes de comunicarse con el sistema.

+0

Esta podría ser una buena solución, excepto que aquí no necesito una comunicación bidireccional. El agente no necesita saber si el mensaje fue entregado al agente, solo tiene que enviarlo. – Nedo

+0

No estoy seguro, pero [AFAIK] (http://en.wiktionary.org/wiki/AFAIK), no hay ninguna noción de enchufes unidirecionales en ZeroMQ. Si sus agentes REQ necesitan mantenerse conectados con el intermediario, simplemente cierre el socket cada vez que se envíe un evento. –

1

REQ-REP es cuando desea un viaje de ida y vuelta. Parece que quieres un PUB-SUB. Configure un SUB con un enlace en un puerto conocido, luego haga que los clientes se conecten a ese puerto y emitan un PUB.