2015-06-25 2 views
1

У меня есть приложение, в котором данные извлекаются из базы данных SQL и отправляются на служебную шину в качестве брокера. Эти шаги:Отправка 1000 брокерских сообщений на служебную шину с использованием метода SendBatchAsync

  1. данных извлекается из БД (в партиях от 1000)
  2. Каждая строка данных преобразуется в Brokered сообщение и добавили в список.
  3. Список 1000 брокерских сообщений отправляется на служебную шину с использованием метода SendBatchAsync.

На третьем этапе я столкнулся с проблемой. Это код, который:

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 байты

ответ

3

К сожалению, вы не потому, что общий размер полезной нагрузки составляет около 1,4 МБ (1445 байт * 1000), тогда как максимальный размер партии допускается может 256 KB.

Ref: https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.topicclient.sendbatch.aspx (примечание раздел)

Максимальный размер партии такой же, как максимальный размер одного сообщения (в настоящее время 256 Кб).

Я думаю, вам нужно будет разделить пакет дальше на меньшие партии, чтобы вы не превышали предел 256K.

+0

Да кажется так ... Спасибо за разъяснение. – nitinvertigo

1

Вы можете использовать пространство имен премиум-класса в Azure Service Bus. Это позволяет получать сообщения до 1 МБ. Хотя заголовок по-прежнему ограничен 64K.

PS - Проверьте цены перед использованием пространства имен премиум-класса.

Для получения более подробной информации ->

https://blogs.msdn.microsoft.com/servicebus/2016/07/07/things-to-know-about-premium-messaging/