Azure Service Bus Premium发送100MB批次消息异常问题咨询
- 问题属性:同时存在本地代码逻辑错误和配置遗漏,不属于Azure服务端原生故障
- 异常1(批量发送断连)根因:
你当前的批量发送逻辑只校验了消息大小阈值,遗漏了Service Bus批处理的固定限制:单批次最多支持10000条消息。你测试时批量攒了349万条单字符消息,远超数量上限,超出部分的空数据块被服务端识别为无效报文,触发强制断连报错。 - 异常2(单条100MB消息超时)根因:
你遗漏了两项核心配置要求:- ServiceBusClient默认配置不匹配大消息传输场景:默认传输超时时间仅为60秒,未显式指定AMQP传输类型,大帧AMQP数据包易被网络链路的QoS规则拦截。
- 100MB消息是2024年推出的预览特性,需要你在Azure门户对应Service Bus Premium命名空间的「功能」页面手动开启大消息支持开关,默认状态下该特性关闭,服务端最大仅支持1MB消息,超出大小的请求会被静默拦截最终触发超时。
- 修复步骤:
- 调整批量发送逻辑,新增单批次消息数不超过10000的判断条件,不要仅依赖大小校验。
- 实例化ServiceBusClient时显式传入适配大消息的配置,示例代码如下:
var clientOptions = new ServiceBusClientOptions { TransportType = ServiceBusTransportType.AmqpTcp, RetryOptions = new ServiceBusRetryOptions { TryTimeout = TimeSpan.FromMinutes(5), Mode = ServiceBusRetryMode.Exponential } }; client = new ServiceBusClient(connectionString, clientOptions);- 单条100MB消息直接调用
sender.SendMessageAsync()发送,不要使用批处理接口减少额外协议开销。
内容的提问来源于stack exchange,提问作者Arun Prakash Nagendran
相关产品推荐
相关产品推荐

