C# Azure服务总线-消息:ConnectionsQuotaExceed

C# Azure服务总线-消息:ConnectionsQuotaExceed,c#,azure,azureservicebus,quota,C#,Azure,Azureservicebus,Quota,我们从Azure Service Bus收到以下ConnectionsQuotaExceed消息: 例外情况 EventName=“MessageEvent”Message=“与服务总线通信时发生一个或多个未知错误。 异常类型:QuotaExceedeException 异常深度:0 消息:命名空间生成超出了ConnectionsQuotaE 堆栈跟踪 堆栈跟踪:位于Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncR

我们从
Azure Service Bus
收到以下
ConnectionsQuotaExceed
消息:

例外情况 EventName=“MessageEvent”Message=“与服务总线通信时发生一个或多个未知错误。 异常类型:QuotaExceedeException 异常深度:0 消息:命名空间生成超出了ConnectionsQuotaE

堆栈跟踪 堆栈跟踪:位于Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult结果) 位于Microsoft.ServiceBus.Messaging.QueueClient.RetryAcceptMessageSessionAsyncResult.End(IAsyncResult r) 位于Microsoft.ServiceBus.Messaging.QueueClient.EndAcceptMessageSession(IAsyncResult结果) 在System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar、Func 2 endFunction、Action 1 endAction、Task 1 Promission、Boolean requiresSynchronization)

来自引发异常的上一个位置的堆栈结束跟踪--- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在d:\vsoagents\18\s\Cloud.ServiceBus.Utilities\ResilientQueueClient.cs中的Platform.ServiceBus.Utilities.ResilientQueueClient.c\u显示class23.d\Uuu 25.MoveNext():第0行

异常类型:FaultException`1 异常深度:1 消息:命名空间生成超出了ConnectionsQuotaE。 堆栈跟踪: 服务器堆栈跟踪: 位于Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.ThrowIfFaultMessage(Message WCFMMessage) 位于Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.HandleMessageReceived(IAsyncResult结果)

问题 文档中概述了配额。异常似乎指的是此
连接配额

命名空间上的并发连接数。

  • 后续的附加连接请求将被拒绝,并且调用代码将接收到异常
  • REST操作不计入并发TCP连接
  • 网络信息:1000
  • AMQP:5000
我的问题是,我们无法隔离此配额的确切使用情况,可能是AMQP连接的数量

在达到限制之前,用户似乎看不到这些阈值,从而导致类似这样的异常。从容量规划的角度来看,这使得很难理解何时需要对任何相关资源进行扩展

查看Azure portal UI Service Bus性能,以下指标可用:

  • 传入消息
  • 内部服务错误
  • 长度
  • 服务器忙错误
  • 大小
  • 成功的请求
  • 其他错误
  • 请求总数
重要的是,没有连接,没有AMQP线程,实际上没有本文中详细介绍的配额阈值

问题
有没有一种方法可以通过Azure API或另一个Azure UI来检查和提醒Service Bus quotas文章中记录的配额,或者至少检查到Service Bus命名空间的
AMQP
连接数?

嘿,Scott,我不知道答案,但你试过Azure Service Bus EventHub吗?EventHub可以接收数以百万计的数据每秒消息。可能是你的解决方案吗?你好,托马斯。谢谢你的帖子。我们有一个研发团队负责此案:)我同意你的评论,即EventHub缓解了这个问题,但重新设计我们的平台架构以支持EventHub需要几个月的时间。谢谢你的帖子。Scott。是的,这需要时间,时间就是金钱:-)其他可以实现这一技巧的提示:在将消息发送到队列之前对其进行批处理,或者实施自定义重试策略,将
连接QuotaExceed
处理为瞬时故障。请参阅此处的文档()以及如何在服务总线客户端上配置它。()。对于Thomas来说,这是因为您有太多的设备,还是每个设备有太多的连接?另一种选择是按名称空间进行划分,但不幸的是,您无法在名称空间之间转发消息,因此需要一些手动工作。