单个Azure Service Bus队列

时间:2016-04-07 13:32:00

标签: azure servicebus

我有几个客户端应用程序正在等待从Azure Service Bus队列中删除消息作业。

一旦客户有了这份工作,我就不希望任何其他客户申请人接受这份工作。

如果所有客户端都实施Queue.OnMessage()以通知到达消息,我怎样才能确定2个或更多客户端不接收消息?

2 个答案:

答案 0 :(得分:1)

我的理解是,只要其中一名工作人员从队列中获得了一个项目,就会在某个可配置的时间(租约)内对其他人不可见。如果工作人员成功完成了该作业,则会通知队列该项目可以被删除。如果工作人员失败,它可以通知队列将项目移动到死信队列,如果工人死亡,该项目在其他工作人员的租约时间后变为可见。项目中应该有一个属性(由ServiceBus设置),表示项目的交付次数。还有一个TTL(生存时间),之后项目将自动移动到死信队列。

答案 1 :(得分:0)

为了避免使用队列,您可以使用Azure Service Bus的会话功能。

首先需要创建一个会话感知队列,然后才能执行其他任务,这可以按照以下步骤完成。

SessionId

设置会话感知队列后,您必须为消息设置MessageSession属性,并使用QueueClient而不是=WARNING REPORT==== 7-Apr-2016::10:40:50 === closing AMQP connection <0.32373.9> (192.168.55.1:55716 -> 192.168.55.100:5672): connection_closed_abruptly 接收消息。

可以找到一些代码示例: Sending MessagesReceiving Messages