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