NServiceBus over AzureStorage发送消息所用的时间超过了可视性超时时间

NServiceBus over AzureStorage发送消息所用的时间超过了可视性超时时间,nservicebus,azure-storage-queues,Nservicebus,Azure Storage Queues,我在AzureStorageQueues交通工具上有一辆N服务巴士 有时,我的消息处理程序在其日志中显示以下两个条目: 2018-08-27 12:27:23.0329信息5处理信息 2018-08-27 12:27:23.7359警告5发送消息花费的时间更长 而不是可视性超时。消息将重新出现在队列中,并且 将再次获得。 NServiceBus.AzureStorageQueues.LeaseTimeoutException:pop收据 云队列消息“2ebd6dd4-f4a1-40c6-a52e

我在AzureStorageQueues交通工具上有一辆N服务巴士

有时,我的消息处理程序在其日志中显示以下两个条目:

2018-08-27 12:27:23.0329信息5处理信息

2018-08-27 12:27:23.7359警告5发送消息花费的时间更长 而不是可视性超时。消息将重新出现在队列中,并且 将再次获得。 NServiceBus.AzureStorageQueues.LeaseTimeoutException:pop收据 云队列消息“2ebd6dd4-f4a1-40c6-a52e-499e22bc9f2f”的 无效,因为它超出了下一个可见时间“00:00:09.7359860”

我知道有一个可视性超时可以配置,但默认为30秒。正在处理的消息的处理时间超过30秒


但没有意义的是这两个日志条目的时间。处理程序在23.0329秒启动,而警告在23.7359秒弹出。那仅仅是0.7秒。为什么呢?我预计NServiceBus的警告会在30秒的InvisibilityTimeout后弹出。

假设您使用默认设置,则会在中检索消息。批处理中的所有消息都具有相同的可见性超时值30秒。还有(计算为
max(2,逻辑处理器的数量)
,这可能会产生影响,导致批处理中的某些消息等待以前的消息完成处理。因此,您的消息可能作为批处理的一部分被检索,但未立即处理,导致可见性超时过期


通过调整配置以满足您的特定场景,可以消除重复处理消息的尝试。

此处的批处理引用才有意义!问题发生时,有大量待处理的消息积压,如果一次从队列32中提取这些消息,则它们无法全部处理30秒内完成,谢谢!