Man*_*kar 6 c# azure azureservicebus azure-servicebus-topics
我一直在研究服务总线队列和主题的锁定和续订机制.但是,目前尚不清楚锁定持续时间究竟对主题订阅的意义.
例如:
如果我有一个主题GameScoreUpdate,它有多个订阅者.
因此,本主题的任何消息都将发送给所有订阅者.
现在如果在一个订阅"Subscription1"上,我的锁定持续时间为30秒.但是消息处理不完整.那么锁定到期了吗?
这之后会发生什么?其他订阅者已经收到此消息.当前订户正在处理该消息.
在这种情况下,锁定的重要性是什么?
Sea*_*man 11
将每个订阅视为"收件箱".每个订户获得一个.消息将发送给所有订阅者,但实际上,它是放置在每个"收件箱"中的消息的克隆,假设它具有匹配条件.
当给定订户尝试使用PeekLock模式处理来自"收件箱" 的消息时,该消息被标记为不可见.如果未能及时处理消息LockDuration,则消息将重新出现在"收件箱"中,并将再次尝试进行处理.直到MaxDeliveryCount尝试用尽为止.在这种情况下,消息将是无效的.
这对于竞争的消费者来说确实是需要的.即,当您的订户(查看给定订阅/"收件箱"的过程)被扩展以处理更多数量的消息时.
在这种情况下,锁定的重要性是什么?
LockDuration指示队列(毕竟订阅是队列)以使消息对于竞争消费者不可见,以确保当前处理节点可以使用定义的时间帧来处理它LockDuration.更新锁定机制可确保将当前正在处理的消息的锁定扩展为允许比LockDuration处理时间更长的时间(如果需要).重要的是要记住,锁定续订不能保证成功.
| 归档时间: | 
 | 
| 查看次数: | 3218 次 | 
| 最近记录: |