如何影响Azure C中GetSubscription()和SubscriptionExists()的重试策略#

时间:2015-09-16 13:23:29

标签: c# azure azureservicebus

我遇到订阅超时的问题。我在namespacemanager(maxBackoff 30秒)上有一个指数重试策略,它有助于缓解QueueExists()和TopicExists()的超时。但是,我记录的95%以上的错误都是使用GetSubscription()和SubscriptionExists()。我确实有很多队列(超过1000个),主题(超过1000个)和订阅者(​​超过1000个)。没有一个主题拥有超过700个订阅者,这使我们可以轻松地远离每个主题限制的2000个订阅者。任何帮助表示赞赏!

GetSubscription()的已清理错误段:

请求在60000毫秒后超时。无法确定请求的成功完成。应进行其他查询以确定操作是否成功。 TrackingId:[一个guid,故意删除],TimeStamp:[一个日期时间,故意删除]服务器堆栈跟踪:异常重新抛出[0]:在Microsoft的Microsoft.ServiceBus.Common.AsyncResult.End [TAsyncResult](IAsyncResult结果)。位于[余下故意删除]的Microsoft.ServiceBus.NamespaceManager.GetSubscription(String topicPath,String name)中的ServiceBus.NamespaceManager.OnEndGetSubscription(IAsyncResult结果)

SubscriptionExists()的已清理错误段:

请求在60000毫秒后超时。无法确定请求的成功完成。应进行其他查询以确定操作是否成功。 TrackingId:[一个guid,故意删除],TimeStamp:[一个日期时间,故意删除]服务器堆栈跟踪:异常重新抛出[0]:在Microsoft的Microsoft.ServiceBus.Common.AsyncResult.End [TAsyncResult](IAsyncResult结果)。位于[余下故意删除]的Microsoft.ServiceBus.NamespaceManager.SubscriptionExists(String topicPath,String name)中的ServiceBus.NamespaceManager.OnEndSubscriptionExists(IAsyncResult结果)

我会喜欢使用任何机制来启用堆栈跟踪中提供的跟踪信息。 谢谢!

1 个答案:

答案 0 :(得分:0)

我了解到应该避免使用SubscriptionExists()。首选项是对MessagingEntityNotFoundException执行NamespaceManager.GetSubscription()调用和陷阱,以便将其丢弃。