第二个实体发布者如何收到新订阅者的通知?

时间:2011-05-20 19:33:08

标签: nservicebus publish-subscribe

this question相关: 据我了解,两个物理发布者代表一个逻辑发布者,每个发布者必须拥有自己的订阅队列。使用DBSubscriptionStorage允许他们拥有一个共同的订阅者列表,但是当新订阅者弹出并订阅时会发生什么?订阅消息将进入其中一个订阅队列,然后进入数据库。有没有办法,如果没有重新启动其他发布商,他们可以让他们知道新订户?

2 个答案:

答案 0 :(得分:1)

你有几个选择。最简单的方法之一是让每个独立的物理发布者指向一个物理订阅者/订阅数据库。

另一个处理它的好方法是使用数据库复制。复制的唯一问题是它本身就是“单向”。即便如此,有一个非常有趣的MySQL项目叫做“MySQL MMM”,它似乎非常适合这种情况。

最后,您可能会使用像Membase之类的东西拥有自己的订阅存储,这是一个持久的,复制的键/值存储。

底线:您可以拥有一个最简单的订阅数据库,但您有一个失败点。或者您可以拥有复制的订阅存储空间。复制存储将确保所有节点都包含所有订户的列表。

答案 1 :(得分:1)

2个拥有多个订阅者的物理发布者

配置

  • 每个端点(发布者或订阅者)都有自己的输入队列。
  • 每个发布者都将配置为指向同一个共享订阅数据库
  • 每个订阅者都将配置为指向一个发布者输入队列(这是他们将删除其订阅消息的位置)

处理

  1. Subscriber1将订阅消息(M1)放入Publisher1的输入队列
  2. Publisher1将该订阅保存到数据库中
  3. Subscriber2将订阅消息(M2)放入Publisher2的输入队列
  4. Publisher2将该订阅保存到数据库
  5. 放置在Subscriber1的输入队列中的Publisher1发布者M1
  6. 对于Publisher2和M1
  7. 也是如此

    您必须确定所有订阅者是否对相同的消息感兴趣。两个发布者都可以发布相同的消息,因为每个订阅者只能订阅一次(在P1或P2)。您可以完全控制如何“加载平衡”工作。如果您还没有查看,可以找到更多信息here