2011-11-21 4 views
5

Я реализую систему обмена сообщениями, в которой внешние программы, называемые агентами, могут взаимодействовать через производителей ZeroMq. Таким образом, каждый раз, когда возникает интересное событие, агент отправляет сообщение в ZeroMq.Схема трубопровода ZeroMQ

Я заинтересован в реализации этого, используя шаблон трубопровода.

Я нашел несколько примеров (диспетчер работника-вентилятора), но компонент Ventilator создает конечную точку для приема соединений от рабочего и затем отправляет все сообщения в пакетном режиме.

Мой сценарий совсем другой. «Агент» подключается каждый раз, когда событие требуется для отправки - оно не ждет соединений от рабочих, поэтому мне интересно, возможно ли это? Кроме того, важным фактом является то, что сообщения должны обрабатываться для отправки.

ответ

2

Вы можете смешивать шаблоны для достижения вашего решения. Я думаю, что это должно быть specialized broker, который создает экземпляры агентов для реальных агентов REQ. Эти сборщики агентов должны позаботиться о заказе перед тем, как связаться с системой.

+0

Это может быть хорошим решением, за исключением того, что здесь мне не нужна двунаправленная передача. Агент не должен знать, было ли сообщение доставлено брокеру - ему просто нужно отправить его. – Nedo

+0

Я не уверен, но [AFAIK] (http://en.wiktionary.org/wiki/AFAIK) не существует понятия однонаправленных сокетов в ZeroMQ. Если ваши агенты REQ необходимо поддерживать связь с брокером, просто закрывайте сокет каждый раз, когда отправляется событие. –

1

REQ-REP - это когда вы хотите туда и обратно. Похоже, вы хотите PUB-SUB. Настройте SUB со связью на хорошо известном порту, затем подключите клиентов к этому порту и выпустите PUB.

Смежные вопросы