我有一个应用程序,其中数据从SQL DB获取并作为代理消息发送到服务总线。这些是步骤:
我正面临这个问题的第三步。这是代码:
public async Task SendMessagesAsync(List<BrokeredMessage> brokeredMessageList)
{
try
{
var topicClient = CreateTopicClient();
await topicClient.SendBatchAsync(brokeredMessageList);
}
catch(Exception ex)
{
throw ex;
}
}
当编译器使用SendBatchAsync方法时,它会在与Service Bus通信期间出现错误错误。检查连接信息,然后重试。,内部异常为:
Internal Server Error: The server did not provide a meaningful reply; this might be caused by a premature session shutdown. TrackingId:some guid here
但是,如果我尝试发送100条消息,它可以正常工作。我该怎么做才能让它一次发送1000条消息?
注意:每封邮件大小为1445字节
答案 0 :(得分:5)
不幸的是,您不能,因为您的总有效负载大小约为1.4 MB(1445字节* 1000),而允许的批处理的最大大小为256 KB。
参考:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx(备注栏目)
批次的最大大小与a的最大大小相同 单个消息(目前为256 Kb)。
我想您需要将批次进一步拆分为较小的批次,以便不超过256K的限制。
答案 1 :(得分:1)
您可以在Azure Service Bus中使用高级命名空间。 这允许消息高达1MB。 虽然标题仍然限制在64K。
PS - 在使用高级命名空间之前检查定价。
了解更多信息 - &gt;
https://blogs.msdn.microsoft.com/servicebus/2016/07/07/things-to-know-about-premium-messaging/