繁体   English   中英

Azure Service Bus上的MassTransit抛出MessageSizeExceededException

[英]MassTransit on Azure Service Bus throws MessageSizeExceededException

我正在使用MassTransit发送和接收微服务命令。 当我在本地运行它时,它可以很好地发送和接收(远程连接到Azure Service Bus实例)。 例如,我从本地控制台应用程序向远程ServiceBus队列发送命令(可以在Service Bus Explorer 3.0.4中看到),然后我的本地TopShelf服务接收并处理该命令。 但是,当我部署服务时,它将失败并显示以下错误:

Microsoft.ServiceBus.Messaging.MessageSizeExceededException: The received message (delivery-id:0, size:1904586 bytes) exceeds the limit (262144 bytes) currently allowed on the link.

我只发送一条消息,消息很大,但肯定不是错误中提到的1.8MB! 它仅比100KB大一点。

我发现这篇文章是关于消息的批量分区的 ,但是在我看来,这仅在要将多个消息拆分为较小的消息组时才有意义。 我只发送一条消息。 另外,我在MassTransit中找不到有关如何实际执行操作的任何文档。 我尝试像这样设置IServiceBusHostConfiguratorcfg.BatchFlushInterval = TimeSpan.FromSeconds(0.05);

  1. 有人可以解释为什么它认为我的邮件这么大吗?
  2. 我可以将单个消息拆分为较小的分区吗? 还是有其他解决方案?
  3. 我应该完全禁用分区吗? 如果是这样,怎么办?

服务总线的消息限制为256k,其中包括围绕消息主体本身的序列化信封。 如果您在错误中看到的消息大小为1.9MB,则显然是在推送非常大的消息。

仔细查看您的消息大小,如果消息中包含附件或二进制数据之类的内容,请考虑使用MessageData<>功能将二进制有效负载带外发送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM