Azure Service Bus - 订阅者可以独立订阅订阅并共享相同的消息吗?

时间:2014-01-18 02:36:23

标签: azure service subscriptions bus

我是Azure Service Bus的新手,已创建成功的poc用于创建主题,并创建单独的订阅者应用程序以接收其消息。

基于这篇文章,我引述: “一个主题最多可以有2,000个与之关联的订阅,每个订阅都会获得发送到该主题的所有消息的独立副本。一个或多个订阅者可以独立订阅订阅,竞争来自它的消息。“

http://convective.wordpress.com/2011/06/08/windows-azure-appfabric-service-bus-queues-and-topics/

我有兴趣做的是为多个应用程序扩展它以独立订阅相同的主题,但不竞争

我当前的poc有一个发件人和两个单独的应用程序订阅了相同的主题和订阅。我看到的行为是,如果我从发件人发布一条消息,则两个正在运行的订阅应用程序中的任何一个都会收到它;但不是另一个。

我的问题是,多个独立的应用程序是否可以接收相同的主题消息?任何建议将不胜感激!

2 个答案:

答案 0 :(得分:19)

创建主题订阅时,它具有特定的订阅名称。然后,任何开始请求该订阅名称的消息的消费者将竞争该订阅上的消息。如果您希望每个独立的应用程序都收到发送给主题的消息副本,则每个应用程序都必须创建自己的主题订阅。您几乎可以将每个订阅视为一个队列,直接由该主题提供。

我给出的例子是一所大学。主题是“新学生”,学院内的每个部门都希望收到新学生的留言副本。因此每个部门都有自己的订阅。将有“音乐”,“比林斯”,“科学”,“数学”订阅等。他们每个人都订阅新学生主题。通过这种方式,每个部门都会收到新学生消息的副本,或者甚至可以根据需要过滤他们关心的事物。如果部门在处理这些部门时落后,他们可以使用他们的订阅名称来启动处理器的更多实例,从而在理论上增加他们的吞吐量,因为更多的消费者然后在他们的订阅中竞争消息。

因此,在您的示例中,每个应用程序都需要创建自己的订阅,或者分配一个唯一的订阅,以便在启动时开始提取。请注意,如果您让应用程序生命周期决定订阅的生命周期(意味着您在应用程序启动时创建订阅并在应用程序关闭时销毁它),您需要注意,如果没有活动订阅,则发送给主题的消息只会丢失。但是,您可以创建捕获所有订阅,该订阅仅接收未传递到任何其他订阅的消息。这实际上取决于你想要完成的事情。

答案 1 :(得分:1)

您要寻找的不是服务总线,而是事件中心。 Event Hub完全按照您描述的方式工作,也可以通过AMQP访问。