我想从ZeroMQ zguide实现类似于 Request-Reply Broker 的设计,但我没有提前运行多个工作线程,我希望有一个工作人员接收所有请求,并产生异步操作(任务)来处理它们并发送响应。
实现此目的的套接字类型的正确组合是什么?
答案 0 :(得分:1)
您可能只需要一个工作人员来实现Load Balancing Message Broker。 “指南”中描述了这种模式,字面上指出:
“此经纪人执行以下操作:
如果您只有一名工作人员,则所有请求都保留在队列中并以FIFO方式处理。
答案 1 :(得分:1)
我使用以下套接字类型组合实现了这个:
请求:强>
客户经销商 - >服务器路由器 - >请求处理程序(生成)
回复:强>
客户端经销商< - 服务器路由器< - 服务器经销商< - 请求处理程序 经销商
DEALER
inproc
套接字将回复返回给服务器
DEALER
inproc
套接字接收来自请求处理程序的回复
ROUTER
套接字将回复发送到客户端DEALER
套接字接收回复我在这里发布了这个例子: https://github.com/imatix/zguide/blob/master/examples/Python/asyncrrhandlers.py
答案 2 :(得分:0)
听起来在任何时候都只有一个发布者和一个接收者 - 在这种情况下,Request / Recieve是最简单的一个。然而,如果需要,转移到发布/订阅模式并具有多个接收器将允许您水平扩展。