Каков наилучший способ отправки асинхронных сообщений без ответа между узлами с ØMQ? - PullRequest
7 голосов
/ 27 марта 2012

У меня есть небольшой кластер пиров (например, 10 узлов), который уже публикует и подписывается на сообщения.Это работает нормально.Кластер является статическим, и каждый узел знает адрес других узлов.

В моем случае использования мне также нужны все узлы, чтобы иметь возможность отправлять сообщения на любой конкретный узел, и все узлы должны прослушиватьсообщения, адресованные им.Отправляющий узел не нуждается в ответе, не должен ждать ответа и не должен знать, что другой узел получил сообщение.

Какие типы шаблонов и типов сокетов могут быть использованы для реализацииэтот?

Я довольно новичок в ØMQ и посмотрел шаблон фрилансера из руководства, более конкретно Модель три - Сложная и неприятная .Является ли использование подхода ROUTER-ROUTER, описанного там, уместным в моем случае?

Я думаю о том, чтобы позволить каждому узлу привязываться к сокету ROUTER, устанавливая свой адрес в качестве идентификатора (и «опрашивая» его в своем цикле сообщений),а также позволяя узлу отправлять через сокет ROUTER, указывая адрес принимающего узла как идентификатор.

Я пропустил какой-то более простой способ сделать это?Использование подхода, описанного выше, может показаться немного сложным, поскольку мне действительно не нужна процедура рукопожатия, дающая принимающей стороне возможность отправлять ответ.

1 Ответ

2 голосов
/ 29 марта 2012

Для отправки работы коллеге без ответа, я бы, вероятно, просто использовал шаблон Fanout, который позволит вам более эффективно «запускать и забывать».

Маршрутизатор и дилер действительно существуют дляУровень «устройства» в «расширенном» шаблоне запроса / ответа.

...