Rebus节点同时作为竞争消费者和pub-sub订户

时间:2016-09-14 23:23:20

标签: rebus

我的情况是,必须同时存在一组节点(N1N2N3

  • 以pub-sub方式订阅消息类型T1,即必须将任何已发布的T1发送到集合中的所有节点(N1,{{ 1}} N2

  • 在此集合中为消息类型N3作为竞争消费者操作,即任何已发布的T2必须仅传递到集合中的一个节点

我知道如何使用两辆公共汽车

  • 第一个总线(对于pub-sub)使用每个节点的输入队列。

  • 第二条总线(针对竞争消费者)使用单个输入队列,由所有节点共享。

但是,有没有办法避免使用两条总线并仅使用一条总线完成相同的行为?

由于

1 个答案:

答案 0 :(得分:1)

据我所知,您有两种选择:

1)每个节点都有两个总线实例,每个节点都有自己的输入队列,竞争消费者都使用相同的队列(完全按照你的描述),或者

2)在每个节点中拥有一个订户,每个订户都使用自己的队列,然后手动路由T2给其中一个订户。

在不了解您正在解决的问题的情况下,我最初的想法是(1)更简单,更容易做对。 (2)虽然可能很有趣:)

如果你选择做(2),那么看看是否有趣会很有趣。订阅者可以简单地订阅T2,因为如果它是常规事件,他们原本会这样做,但是生产者会 - 而不是发布T2 - 查找该消息的订阅者并简单地选择一个他们。