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

Man*_*kar 6 c# azure azureservicebus azure-servicebus-topics

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

例如:

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

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

现在如果在一个订阅"Subscription1"上,我的锁定持续时间为30秒.但是消息处理不完整.那么锁定到期了吗?

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

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

Sea*_*man 11

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

当给定订户尝试使用PeekLock模式处理来自"收件箱" 的消息时,该消息被标记为不可见.如果未能及时处理消息LockDuration,则消息将重新出现在"收件箱"中,并将再次尝试进行处理.直到MaxDeliveryCount尝试用尽为止.在这种情况下,消息将是无效的.

这对于竞争的消费者来说确实是需要的.即,当您的订户(查看给定订阅/"收件箱"的过程)被扩展以处理更多数量的消息时.

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

LockDuration指示队列(毕竟订阅是队列)以使消息对于竞争消费者不可见,以确保当前处理节点可以使用定义的时间帧来处理它LockDuration.更新锁定机制可确保将当前正在处理的消息的锁定扩展为允许比LockDuration处理时间更长的时间(如果需要).重要的是要记住,锁定续订不能保证成功.