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

Her*_*tix 11 service subscriptions azure bus

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

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

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

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

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

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

Mik*_*eWo 22

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

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

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