Azure服务总线订阅未从主题获取任何消息

时间:2016-07-28 00:36:21

标签: azure azureservicebus azure-servicebus-topics

背景

我在Azure Service Bus中有一个主题( T1 ),它从客户端(Web应用程序)获取了数百万条消息。有3个订阅( S1,S2,S3 )没有任何由3个不同的后台进程(工作者角色)创建的过滤器。

问题

当工作人员角色正在运行时,只有第一个订阅( S1 )似乎正在收到任何消息,然后休息( S2和S3 )要么“#” 39;收到任何东西或得到一小部分。所有订阅者都以相同的方式创建,具有相同的精确设置且没有过滤器。

Service Bus Explorer显示 S1(~100K)的正确消息计数,但对于S2和S3,活动消息计数非常低(小于10且通常为0 )。在我看来,不知何故消息被删除甚至没有得到客户的接收。

调查错误的最佳方法是什么,以及订阅者之间的邮件计数不匹配的原因是什么。关于什么可能出错的任何建议?

2 个答案:

答案 0 :(得分:1)

检查有问题的订阅。订阅支持他们自己的DefaultMessageTimeToLive。默认情况下,它设置为最大值。查看用于创建订阅的代码,也许是使用QueueDescription进行自定义 DefaultMessageTimeToLive和其他值。

此外,请启用EnableDeadLetteringOnMessageExpiration以查看邮件是否过期。

检查MaxDeliveryCount。如果它太低而且消息未成功处理,则传递计数将超过最大值,并且消息将被消除或破坏。

除此之外,如果过滤正在进行,您可以通过启用EnableDeadLetteringOnFilterEvaluationExceptions

找到该过滤

如果没有任何帮助,请在GutHub或BitBucket中发布指向再现代码的链接,以便人们可以看到已完成的工作。

答案 1 :(得分:0)

听起来很奇怪。尝试明确定义主题的选项,如 DefaultMessageTimeToLive , 如果 ReceiveAndDelete PeekLock ,请查看订阅客户端工作策略。

本教程可以为您提供帮助:https://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/#how-to-receive-messages-from-a-subscription