Проблемы ZeroMQ с примерами сетевых шаблонов; Параноидальный пират и мажордом

#c #zeromq

#c #zeromq

Вопрос:

Я пытаюсь заставить примеры ZeroMQ Paranoid Pirate и Majordomo работать на C . Код доступен на GitHub Исходный код ZeroMQ examples C .

Оба примера содержат запрос на подключение к МАРШРУТИЗАТОРУ (среди прочих подключений), с помощью которого клиентская программа обменивается данными с очередью сообщений (Paranoid Pirate) или брокером сообщений (Majordomo). В обоих этих примерах шаблонов я не могу установить связь между сокетами запроса и маршрутизатора.

Я скомпилировал и запустил Paranoid Pirate в 64-разрядной версии Windows 7 с использованием Visual C и ZeroMQ-3.2.3, а также в 32-разрядной версии Debian (Wheezy) с использованием g и ZeroMQ-4.0.4. Я также скомпилировал и запустил Majordomo в системе Debian.

Я думаю, что существует некоторая фундаментальная проблема в установлении связи REQ-ROUTER и / или опросе. В обоих примерах клиент не взаимодействует должным образом; но поскольку я пытаюсь изучить сеть ZeroMQ на примерах, это доказывает, что тестирование позволяет одновременно отлаживать их.

Я обнаружил некоторые проблемы с настройками тайм-аута в коде примера, например, когда тайм-аут в 2500 миллисекунд умножается на 1000, чтобы получить тайм-аут в 2500 СЕКУНД; что создает впечатление, что ничего не происходит при просмотре вывода на консоль, но на самом деле это просто очень долгое ожидание.

Кто-нибудь знает, как заставить шаблоны Paranoid Pirate и Majordomo работать так, как задумано в C ?

Комментарии:

1. Время ожидания, умноженное на 1000, вероятно, было связано с более старой версией ZeroMQ, которая использовала микросекунды вместо миллисекунд. Вы экспериментировали с одним каналом связи пары сокетов REQ-МАРШРУТИЗАТОР? Возможно, вы также могли бы попробовать обнюхать сеть, чтобы увидеть, какие сообщения передаются.

2. Безусловно, хорошая идея, как было предложено, сначала попробовать простой пример. Запустите один из первых примеров, просто повторите запрос и посмотрите, сможете ли вы успешно отправлять / получать сообщения. Затем используйте пример req / router, приведенный ранее в руководстве.

3. Нет проблем с простыми примерами REQ-REP. Запустил этот альтернативный пример thisthread.blogspot.co.uk/2012/05 / … (хотя и с использованием zeromq-3.2.3), и он не завершился должным образом и не сообщил «МАРШРУТИЗАТОР готов». Мне кажется, что сообщения не проходили через соединение REQ-ROUTER.

4. Запустил альтернативный пример: Простой ЗАПРОС-МАРШРУТИЗАТОР , на этот раз с использованием zeromq-2.2.0, и он полностью сработал и сообщил «МАРШРУТИЗАТОР готов». Кажется, есть некоторые критические изменения между версиями zeromq.