Что zmq.Маршрутизатор и zmq.Дилер в python zeromq?
может ли кто-нибудь сказать, каковы типы zmq.розетки?
в какой ситуации можно использовать эти разъемы?
главное отличие, которое мне нужно, это zmq.DEALER
и zmq.ROUTER
в python zeroMQ?
какой тип сокета может использовать эти сокеты?
1 ответов
торговец и маршрутизатор гнезда, которые могут позволить легкому шкалированию пар REQ / REP.
при прямом общении REQ и REP разговаривают блокирующим образом.
маршрутизатор-принимает запросы-со стороны REQ
маршрутизатор способен принимать запросы, добавляет конверт с информацией об этом запрашиваемом и делает это новое сообщение доступным для дальнейшей обработки путем соединения кода). Когда ответ приходит назад (в Envelope), он может пройти ответ для субъекта запроса.
дилер-переговоры с рабочими-на стороне REP
дилер заботится о работниках. Обратите внимание, что для использования всего решения работники должны подключаться к дилеру, а не наоборот.
дилер также позволяет неблокирующее соединение с REP.
некоторый соединяясь код передает запрос в конверте к торговцу. Дилер управляет распределением таких запросов среди работников (без конверта) и позже отвечает на код соединения (снова в конверте).
смежный код
код соединения перетасовать сообщения между маршрутизатором и гнездами торговца.
самая простая версия здесь:http://zguide.zeromq.org/py:rrbroker
# Simple request-reply broker
#
# Author: Lev Givon <lev(at)columbia(dot)edu>
import zmq
# Prepare our context and sockets
context = zmq.Context()
frontend = context.socket(zmq.ROUTER)
backend = context.socket(zmq.DEALER)
frontend.bind("tcp://*:5559")
backend.bind("tcp://*:5560")
# Initialize poll set
poller = zmq.Poller()
poller.register(frontend, zmq.POLLIN)
poller.register(backend, zmq.POLLIN)
# Switch messages between sockets
while True:
socks = dict(poller.poll())
if socks.get(frontend) == zmq.POLLIN:
message = frontend.recv_multipart()
backend.send_multipart(message)
if socks.get(backend) == zmq.POLLIN:
message = backend.recv_multipart()
frontend.send_multipart(message)