2015-06-25 20 views
1

我有一个应用程序,其中数据从SQL DB中获取并作为中介消息发送到服务总线。这些步骤如下:从DB使用SendBatchAsync方法向服务总线发送1000个中介消息

  1. 数据取出(在1000批次)
  2. 转换成牵线消息,并添加到列表中的数据的每一行。
  3. 1000个代理消息的列表使用SendBatchAsync方法发送到服务总线。

这是我第三步面对的问题。这是代码为:

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个字节

回答

3

可惜你不能因为你的总有效载荷的大小约为1.4 MB(1445个字节* 1000),而允许该批次的最大大小为256 KB。

价:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx(备注部分)

批次的最大尺寸是相同的一个 单个消息(目前256 KB)的最大大小。

我想你需要将批量进一步分成更小的批次,以便不超过256K限制。

+0

是的,它显得如此...感谢澄清。 – nitinvertigo