锁定持续时间对天蓝色服务总线主题订阅的重要性

时间:2018-02-01 07:13:52

标签: c# azure azureservicebus azure-servicebus-topics

我一直在研究服务总线队列和主题的锁定和续订机制。但是,目前尚不清楚锁定持续时间究竟对主题订阅的意义。

例如:

如果我有一个主题GameScoreUpdate,它有多个订阅者。

因此,本主题的任何消息都将发送给所有订阅者。

现在如果在一个订阅“Subscription1”上,我的锁定持续时间为30秒。但是消息处理还没有完成。那么锁定到期了吗?

此后会发生什么?其他订阅者已经收到此消息。当前用户正在处理该消息。

在这种情况下,锁定的重要性是什么?

1 个答案:

答案 0 :(得分:8)

将每个订阅视为"收件箱"。每个订户获得一个。消息将发送给所有订阅者,但实际上,它是放置在每个"收件箱中的消息的克隆,假定它具有匹配条件。

当给定订户尝试处理来自"收件箱的消息时#34;使用PeekLock模式,邮件被标记为不可见。如果在LockDuration时间内未能处理该邮件,该邮件将重新显示在"收件箱中#34;并将再次尝试处理。在MaxDeliveryCount尝试用尽之前。在这种情况下,消息将是无效的。

竞争消费者确实需要这样做。即当您的订阅者(查看给定订阅/"收件箱"的过程)被扩展出来以处理更多数量的消息时。

  

在这种情况下,锁定的重要性是什么?

LockDuration指示队列(毕竟订阅是一个队列),以使消息对于竞争消费者不可见,以确保当前处理节点可以使用LockDuration定义的时间范围来处理它。更新锁定机制可确保当前正在处理的消息的锁定扩展,以便在需要时允许超过LockDuration处理时间。重要的是要记住,锁定续订保证成功。

相关问题