3

我想要完成的要点是有一个扇出类型的处理,它将结果返回给初始客户端。

现在,它被设置为:

[REQ]-->[ROUTER|PUB]-->[SUB|PUSH]-->[PULL|???]

我将其设置为 PUB-SUB,因为每个 SUB 节点将处理给定清单的不同部分。对于某些清单,所有 SUB 节点都会被命中。对于其他清单,可能只有一部分 SUB 节点被命中。使用 SUB 可以让我实现它,而无需创建关于路由到哪些节点的离散决策点。

我已经达到了我或多或少能够将结果放在一起的地步,但我不知道我应该如何在没有调用者绑定新套接字的情况下将结果返回给 REQ 上的初始调用者在客户端,然后连接到套接字。错误地,我认为如果我可以在 ROUTER 上获得调用者的地址,我可以传递该信息并将消息发送回初始 REQ。

看来这应该是可能的,我缺少的可能是某些设备耦合到路由器?

那么是否有可能实现这一点,是否有更好的模式来实现这一点,而无需在调用者处绑定另一个套接字?

4

1 回答 1

0

最初的调用者REQ希望得到它的回复,ROUTER并且不能接受来自其他任何地方的消息。因此,一种简单的方法是使用具有三个端点的代理:

  • ROUTER用于与客户沟通
  • PUB用于向所有工作人员发送消息
  • PULL获得结果

代理内的路由将是:

  • ROUTER -> PUB
  • PULL -> aggregate_by_client_id() -> ROUTER

从我的角度来看,棘手的部分隐藏在aggregate_by_client_id()其中,这是必要的,因为您只能发送答案REQ。你知道工人会有多少结果吗?

于 2017-08-11T14:33:29.917 回答