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

标签 c# azure azureservicebus

我遇到订阅超时的问题。我在命名空间管理器上采用了指数重试策略(maxBackoff 30 秒),这有助于缓解 QueueExists() 和 TopicExists() 的超时问题。然而,我记录的 95% 以上的错误都与 GetSubscription() 和 SubscriptionExists() 有关。我确实有很多队列(超过 1000 个)、主题(超过 1000 个)和订阅者(​​超过 1000 个)。没有哪个主题拥有超过 700 名订阅者,这使我们轻松远离每个主题 2000 名订阅者的限制。如有任何帮助,我们将不胜感激!

GetSubscription() 的经过清理的错误段:

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

SubscriptionExists() 的经过清理的错误段:

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

我希望对使用堆栈跟踪中提供的跟踪信息的任何机制有所启发。 谢谢!

最佳答案

我了解到应该避免使用 SubscriptionExists()。首选是执行 NamespaceManager.GetSubscription() 调用并捕获 MessagingEntityNotFoundException,以便将其丢弃。

关于c# - 如何影响 Azure C# 中 GetSubscription() 和 SubscriptionExists() 的重试策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609888/

相关文章:

c# - Azure Function 2.x 如何访问 stable_sid?

c# - 某些服务无法构建IHostedService

c# - 如何访问 Azure Function 2 中的 Azure 服务总线消息属性

c# - 用于从 SQL 查询中提取列定义的正则表达式

c# - BroadcastBlock 未按预期工作

c# - 无法从 vscode 中的 .net-core 控制台应用程序读取输入

c# - 如何在 C# 中打印 n 次 n 而无需循环、递归或 goto

WCF 无法与权限建立 SSL/TLS 安全通道的信任关系

azure - 登录时"AADSTS50011: The reply url specified in the request does not match the reply urls configured for the application"

android - 无法验证我的 ACS token