我有一个应用程序,其中从 SQL DB 获取数据并将其作为代理消息发送到服务总线。这些是步骤:
- 从DB中获取数据(批量为1000)
- 每行数据都转换为代理消息并添加到列表中。
- 使用以下命令将 1000 条中转消息的列表发送到服务总线异步发送批处理 method.
我在第三步遇到了这个问题。这是代码:
public async Task SendMessagesAsync(List<BrokeredMessage> brokeredMessageList)
{
try
{
var topicClient = CreateTopicClient();
await topicClient.SendBatchAsync(brokeredMessageList);
}
catch(Exception ex)
{
throw ex;
}
}
当编译器到达 SendBatchAsync 方法时,它给出一个错误:与服务总线通信期间出错。检查连接信息,然后重试。内部例外是:
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字节
不幸的是,您不能这样做,因为您的总负载大小约为 1.4 MB(1445 字节 * 1000),而允许的批处理最大大小为 256 KB。
Ref: https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx(备注部分)
批次的最大大小与a的最大大小相同
单个消息(当前 256 Kb)。
我想您需要将批次进一步拆分为更小的批次,这样您就不会超过 256K 限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)