ZeroMQ, асинхронные блокирующие сокеты - PullRequest
0 голосов
/ 29 мая 2019

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

Разъемы PUSH / PULL отлично работают, но я не смог связать разъем PUSH. Это означает, что у меня не может быть клиент-PUSH для сервера-PULL и сервер-PUSH для клиента-PULL, если клиент находится за брандмауэром, поскольку сервер не может подключиться к клиенту.

В книге написано следующее, но я не могу найти пример этого. «REQ to DEALER: теоретически вы могли бы сделать это, но он сломался бы, если бы вы добавили второй REQ, потому что DEALER не может отправить ответ исходному пиру. для другого клиента. " http://zguide.zeromq.org/php:chapter3

Мне нужно только соединение один-к-одному, так что теоретически это будет работать для меня.

Мой вопрос: какова наилучшая практика для получения асинхронной отправки и получения с ZeroMQ без отбрасывания пакетов?

1 Ответ

0 голосов
/ 30 мая 2019

Большинство сокетов ZeroMQ могут как связываться (прослушивать определенный порт, выступая в качестве сервера), так и соединяться (выступать в качестве клиента). Обычно это не связано с потоком данных. См. руководство для получения дополнительной информации.

Попробуйте связать на своих серверах PUSH-сокет и подключить от своих клиентов PULL-сокет.

...