使用 SendBatchAsync 方法将 1000 条中转消息发送到服务总线
Sending 1000 brokered messages to the service bus using the SendBatchAsync method
我有一个应用程序,其中数据从 SQL 数据库中获取并作为代理消息发送到服务总线。这些是步骤:
- 从数据库中获取数据(以 1000 个为一批)
- 每行数据转换成Brokered Message并添加到列表中。
- 使用 SendBatchAsync 方法将 1000 条代理消息的列表发送到服务总线。
我在第 3 步遇到了这个问题。这是代码:
public async Task SendMessagesAsync(List<BrokeredMessage> brokeredMessageList)
{
try
{
var topicClient = CreateTopicClient();
await topicClient.SendBatchAsync(brokeredMessageList);
}
catch(Exception ex)
{
throw ex;
}
}
当编译器使用 SendBatchAsync 方法时,它会给出一个错误 Error during with Service Bus communication with 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字节
遗憾的是,您不能这样做,因为您的总负载大小约为 1.4 MB(1445 字节 * 1000),而允许的最大批处理大小为 256 KB。
参考:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx(备注部分)
The maximum size of the batch is the same as the maximum size of a
single message (currently 256 Kb).
我想您需要将批次进一步拆分为更小的批次,以免超过 256K 的限制。
您可以在 Azure 服务总线中使用高级命名空间。
这允许最大 1MB 的消息。
虽然 header 仍然限制为 64K。
PS - 在使用高级命名空间之前检查定价。
了解更多信息 ->
https://blogs.msdn.microsoft.com/servicebus/2016/07/07/things-to-know-about-premium-messaging/
我有一个应用程序,其中数据从 SQL 数据库中获取并作为代理消息发送到服务总线。这些是步骤:
- 从数据库中获取数据(以 1000 个为一批)
- 每行数据转换成Brokered Message并添加到列表中。
- 使用 SendBatchAsync 方法将 1000 条代理消息的列表发送到服务总线。
我在第 3 步遇到了这个问题。这是代码:
public async Task SendMessagesAsync(List<BrokeredMessage> brokeredMessageList)
{
try
{
var topicClient = CreateTopicClient();
await topicClient.SendBatchAsync(brokeredMessageList);
}
catch(Exception ex)
{
throw ex;
}
}
当编译器使用 SendBatchAsync 方法时,它会给出一个错误 Error during with Service Bus communication with 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字节
遗憾的是,您不能这样做,因为您的总负载大小约为 1.4 MB(1445 字节 * 1000),而允许的最大批处理大小为 256 KB。
参考:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx(备注部分)
The maximum size of the batch is the same as the maximum size of a single message (currently 256 Kb).
我想您需要将批次进一步拆分为更小的批次,以免超过 256K 的限制。
您可以在 Azure 服务总线中使用高级命名空间。 这允许最大 1MB 的消息。 虽然 header 仍然限制为 64K。
PS - 在使用高级命名空间之前检查定价。
了解更多信息 ->
https://blogs.msdn.microsoft.com/servicebus/2016/07/07/things-to-know-about-premium-messaging/