2015-06-25 21 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