背景
我在Azure Service Bus中有一个主题( T1 ),它从客户端(Web应用程序)获取了数百万条消息。有3个订阅( S1,S2,S3 )没有任何由3个不同的后台进程(工作者角色)创建的过滤器。
问题
当工作人员角色正在运行时,只有第一个订阅( S1 )似乎正在收到任何消息,然后休息( S2和S3 )要么“#” 39;收到任何东西或得到一小部分。所有订阅者都以相同的方式创建,具有相同的精确设置且没有过滤器。
Service Bus Explorer显示 S1(~100K)的正确消息计数,但对于S2和S3,活动消息计数非常低(小于10且通常为0 )。在我看来,不知何故消息被删除甚至没有得到客户的接收。
调查错误的最佳方法是什么,以及订阅者之间的邮件计数不匹配的原因是什么。关于什么可能出错的任何建议?
答案 0 :(得分:1)
检查有问题的订阅。订阅支持他们自己的DefaultMessageTimeToLive。默认情况下,它设置为最大值。查看用于创建订阅的代码,也许是使用QueueDescription
进行自定义
DefaultMessageTimeToLive和其他值。
此外,请启用EnableDeadLetteringOnMessageExpiration以查看邮件是否过期。
检查MaxDeliveryCount。如果它太低而且消息未成功处理,则传递计数将超过最大值,并且消息将被消除或破坏。
除此之外,如果过滤正在进行,您可以通过启用EnableDeadLetteringOnFilterEvaluationExceptions
找到该过滤如果没有任何帮助,请在GutHub或BitBucket中发布指向再现代码的链接,以便人们可以看到已完成的工作。
答案 1 :(得分:0)
听起来很奇怪。尝试明确定义主题的选项,如 DefaultMessageTimeToLive , 如果 ReceiveAndDelete 或 PeekLock ,请查看订阅客户端工作策略。