Car*_*lis 5 .net azure azureservicebus azure-servicebus-topics
我刚刚开始使用Azure ServiceBus.有一点我不完全清楚,我很难找到答案.
如果我打电话message.Complete()给订阅消息,这是否意味着此消息将不再发送给任何其他订阅者,或者我是否仅为当前订阅者完成此消息?换句话说,服务总线是否跟踪每个订户或每个订阅的消息?
在我的特定用例中,我希望消息由所有订阅者处理,而不是由任何/一个订阅者处理.这主题有可能吗?
您的问题已经得到解答,但似乎有一些混淆(订阅\订阅者),以及推荐的用例是什么.
考虑一个简单的队列,在一端你放置消息,另一端你弹出它们.这就是ServiceBus队列的行为方式.
现在考虑一个队列,你仍然把消息放在一端,但然后它分成多个末端,你可以从中弹出消息.这描述了一个主题(放置消息的位置)和订阅(弹出消息的位置).
在topic\subscription中,主题中的消息将复制到订阅中.因此,每个订阅都独立于其他订阅.它就像是队列的不同副本.
现在,从订阅接收消息的客户端应用程序就是您所谓的订阅者.每个客户端(订户)都旨在连接到单个订阅.在这种情况下,订户不竞争消息,并且每个订户可以处理与其他订户相同的消息.
另一方面,如果您有许多连接到同一订阅的客户端应用程序(订阅者),那么他们自然会竞争相同的消息.
希望这能解释你得到的答案(这似乎是相互矛盾的,但实际上只是以不同的方式使用相同的术语).最后,您可以使用ServiceBus完成这两种方案.
消息旨在由单个竞争消费者处理。否则,它将被视为消息重复。
如果需要将同一消息发送到同一逻辑订阅者的多个实例,则每个订阅者必须具有自己的专用订阅队列,并带有默认过滤器。
例如:使用Cloud Services时,您需要为CS角色的每个实例创建一个订户。每个订阅队列都必须是唯一可识别的,唯一标识符必须是确定性的。一种选择是使用CS实例ID。每当进程扩展时,实例ID都将附加到订阅队列。这种方法也存在挑战。当流程扩大时,可能会剩下未处理的消息。
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |