背景
我在 Azure 服务总线中有一个主题 (T1),它从客户端(Web 应用程序)获取数百万条消息。有 3 个订阅(S1、S2、S3),没有任何过滤器,由 3 个不同的后台进程(辅助角色)创建。
问题
当工作角色运行时,只有第一个订阅(S1)似乎收到任何消息,然后休息(S2 和 S3)也没有收到任何消息不会收到任何东西或得到其中的一小部分。所有订阅者都以相同的方式创建,具有相同的精确设置,并且没有过滤器。
Service Bus Explorer 显示S1 (~100K) 的正确消息计数,但对于 S2 和 S3,事件消息计数非常非常低(小于 10,通常为 0)。在我看来,不知何故,这些消息甚至在客户端没有收到的情况下就被删除了。
调查问题所在以及订阅者之间的消息计数不匹配的最佳方法是什么。对可能出现的问题有什么建议吗?
最佳答案
检查有问题的订阅。订阅支持自己DefaultMessageTimeToLive 。默认情况下,它设置为最大值。查看用于创建订阅的代码,也许它使用 QueueDescription 来自定义 DefaultMessageTimeToLive 和其他值。
此外,启用 EnableDeadLetteringOnMessageExpiration查看消息是否过期。
检查MaxDeliveryCount 。如果它太低并且消息未成功处理,则传递计数将超过最大值,并且消息将消失或死信。
除此之外,如果过滤正在启动,您可以通过启用 EnableDeadLetteringOnFilterEvaluationExceptions 来发现这一点。
如果没有帮助,请在 GutHub 或 BitBucket 中发布复制代码的链接,以便人们可以看到所做的事情。
关于Azure 服务总线订阅未从该主题获取任何消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625338/