ZeroMQ管道返回到初始客户端
问题描述:
我试图完成的要点是有一个扇出类型的处理,将结果返回给初始客户端。ZeroMQ管道返回到初始客户端
现在,它被设置为:
[REQ]-->[ROUTER|PUB]-->[SUB|PUSH]-->[PULL|???]
我把它设置为PUB-SUB的想法是,每个子节点将处理给定清单的不同部分。对于某些清单,所有SUB节点都被打中。对于其他清单,可能只有SUB节点的一个子集被打中。使用SUB允许我实现它,而无需创建一个离散决策点,以便在哪个节点上路由。
我得到了它的地方,我或多或少能带来的结果一起的地步,但我不知道我应该如何对REQ的结果返回给调用者最初不来电在客户端绑定一个新的套接字,然后连接到套接字。我错误地认为,如果我可以在ROUTER上获得呼叫者的地址,我可以将这些信息传递给最初的REQ。
看来,它应该是可能的,什么我缺少的也许是一些器件连接到路由器?
所以有可能做到这一点,有没有更好的模式,而不绑定在调用方的另一个套接字?
答
初始呼叫者REQ
预计从ROUTER
的回复,并且不能接受来自其他任何地方的消息。因此,一个简单的方法是经纪人与三个端点:
-
ROUTER
用于与客户 -
PUB
发送消息给所有工人 -
PULL
在结果得到
路由在代理中是:
ROUTER -> PUB
PULL -> aggregate_by_client_id() -> ROUTER
的从我的观点棘手的部分的点是隐藏在aggregate_by_client_id()
,这是必要的,因为你可以只发送答案REQ
。你知道工人预期会有多少结果吗?
+0
实际上,在阅读你的第一句话时,为什么会失败呢?现在我没有得出这个明显的结论似乎很愚蠢! –
如果不知道更多关于工艺流程的工作原理,很难提供很多建议。您是否能够快速绘制应用程序清单流程的高级视图? –