2015-11-05 90 views
0

我不明白。AZURE服务总线如何使用订阅消息来处理消息?

假设我有一个球队,一个主题,一个子球。和三个客户订阅。

我发送消息。

第一个客户端收到一条消息并调用complete()动作。

第二个客户端会收到一条消息吗?

如果有客户订阅了它,该怎么办?

问题是 - 什么时候将消息完全从queve/topic/subscription中删除?

P.S. “一对一”的案例很清楚。

回答

0

我会建议您查看竞争消费者模式。 (https://msdn.microsoft.com/en-us/library/dn568101.aspx?f=255&MSPPError=-2147217396)。

您可以有许多角色(即Azure Worker Role)检查队列中的消息(竞争消费者),并在处理时专门锁定它们。每个角色都在为消息而奋斗,而第一个抓住它的人(偶然),目前它是“独占”的。如果获取并处理消息的消费者成功,则运行Complete()方法,否则执行Abandon(消息)。 Complete()完成了它,并且Abandon将它抛回到竞争消费者的狂热中。如果你身体健康,你甚至可以再次抓住它!

您可以在Azure管理门户中设置死信息参数,以确定可以为其他用户重新引入的次数。在某些情况下,事情不能正常工作,所以杀掉消息以便其他消息可以继续畅通无阻。

让我知道你是否有更具体的需求。很乐意提供帮助。这种模式非常有效。

最要好的问候...

相关问题