use*_*r27 15 sockets zeromq python-2.7
任何人都可以告诉zmq.sockets的类型是什么?
在什么情况下可以使用这些插座?
我需要的主要区别是zmq.DEALER,并zmq.ROUTER在Python zeroMQ?
哪种类型的插座可以使用这些插座?
Jan*_*sky 24
DEALER和ROUTER是插座,可以轻松扩展REQ/REP对.
在直接通信中,REQ和REP以阻塞方式进行通话.
路由器能够接受请求,添加包含该被请求者信息的信封,并通过互连代码使该新消息可用于进一步处理.当响应返回时(在信封中),它可以将响应传递回被请求者.
经销商关心工人.请注意,为了使整个解决方案可用,工作人员必须连接到经销商,而不是相反.
DEALER还允许与REP进行无阻塞连接.
某些连接代码将信封中的请求传递给DEALER.经销商管理向工人分发此类请求(没有信封),然后回复互连代码(再次在信封中).
互连代码是在ROUTER和DEALER套接字之间混合消息.
最简单的版本是: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)
Run Code Online (Sandbox Code Playgroud)