我有一个场景,其中有一组节点(N1
, N2
, N3
)必须同时
-
以发布-订阅的方式订阅消息类型
T1
,即任何已发布的T1
必须发送到集合(N1
,N2
和N3
)中的所有节点 -
作为消息类型
T2
的竞争消费者在此集合中操作,即任何已发布的T2
必须仅传递给集合 中的一个节点。
我知道如何使用两个总线来做到这一点
-
第一条总线(用于pub-sub)使用每个节点的输入队列。
-
第二个总线(用于竞争消费者)使用单个输入队列,由所有节点共享。
然而,是否有一种方法可以避免使用两个总线并仅使用一个总线完成相同的行为?
谢谢
据我所知,您有两个选择:
1)在每个节点中有两个总线实例,其中订阅者都有自己的输入队列,而竞争的消费者都使用相同的队列(与您所描述的完全相同),或者
2)在每个节点中都有一个订阅者,每个订阅者使用自己的队列,然后手动将T2
路由到其中一个订阅者。
在对你正在解决的问题一无所知的情况下,我最初的想法是(1)会更简单,更容易解决。(2)可能会很有趣:)
如果你选择做(2),看看订阅者是否可以简单地订阅T2
,因为如果这是一个常规事件,他们就会这样做,这将是很有趣的,但随后生产者将-而不是发布T2
-查找该消息的订阅者并简单地选择其中一个。