ZeroMQ PUB / SUB с epgm не может получать сообщения, отправленные процессом на одном хосте

Все мои процессы имеют два сокета, один PUB и один SUB, и все они используют один и тот же адрес многоадресной рассылки и порт.

Например, PUB сделает это:

Bind ( «epgm: //239.192.1.1: 5555»)

SUB сделает это:

подключения ( «epgm: //239.192.1.1: 5555»)
setsockopt (ZMQ_SUBSCRIBE, «», 0); // подписаться на все

Затем PUB отправит сообщение с помощью вызова zmq_send, а SUB получит с помощью вызова zmq_poll и выполнит неблокирование zmq_recv.

Он прекрасно работает, когда я запускаю два процесса на двух разных хостах. Но если я запускаю их на одном хосте, send работает, но recv никогда ничего не получает.

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

Интересно, так ли это, потому что zeromq (или openpgm) выполняет какую-то фильтрацию, чтобы сообщения, отправляемые из сокета с того же хоста: порт как принимающий сокет, не передавались на принимающий сокет?

3

Решение

Я подозреваю, что ZeroMQ не поддерживает многоадресную обратную связь, или, может быть, вы должны сделать это как-то самостоятельно через API ZeroMQ, а это не так.

3

Другие решения

используйте NORM вместо PGM -> http://zeromq.org/topics:norm-protocol-transport — хорошо работает с петлевой

0

По вопросам рекламы [email protected]