我正在使用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大一点。
我找到了this post regarding batch partitioning of messages,但在我看来,如果您想将多条消息拆分为较小的消息组,那么这只是相关的。我只发送一条消息。另外,我在MassTransit中找不到任何关于如何实际操作的文档。我尝试像这样设置IServiceBusHostConfigurator
:cfg.BatchFlushInterval = TimeSpan.FromSeconds(0.05);
答案 0 :(得分:0)
Service Bus对邮件的限制为256k,其中包括邮件正文周围的序列化信封。如果您在错误中看到消息大小为1.9MB,那么您显然会发出一个非常大的消息。
仔细查看您的邮件大小,如果邮件中包含附件或二进制数据等内容,请考虑使用MessageData<>
功能将二进制有效内容发送到带外。