0

Я использую MassTransit для отправки и получения команд микросервиса. Он отправляет и получает штраф, когда я запускаю его локально (подключение к экземпляру службы Azure Service Bus удаленно). Например. Я посылаю команду из локального консольного приложения в удаленную очередь ServiceBus (которую я вижу в Service Bus Explorer 3.0.4), а затем моя локальная служба TopShelf получает и обрабатывает эту команду. Но когда я раскрываю свою службу он не со следующей ошибкой:MassTransit на Azure Service Bus бросает MessageSizeExceededException

Microsoft.ServiceBus.Messaging.MessageSizeExceededException: The received message (delivery-id:0, size:1904586 bytes) exceeds the limit (262144 bytes) currently allowed on the link. 

Я только отправка одного сообщения, и сообщение является довольно большой, но, конечно, не 1.8MB, как упоминалось в сообщении об ошибке! Это немного больше 100 КБ.

Я нашел this post regarding batch partitioning of messages, но это мне кажется релевантным, если вы хотите разделить несколько сообщений на более мелкие группы сообщений. Я посылаю только одно сообщение. Кроме того, я не могу найти документацию в MassTransit о том, как это сделать на самом деле. Я попытался установить IServiceBusHostConfigurator так: cfg.BatchFlushInterval = TimeSpan.FromSeconds(0.05);

  1. Может кто-то объяснить, почему он думает, что мои сообщения так намного больше?
  2. Могу ли я разделить одно сообщение на более мелкие разделы? Или есть другое решение?
  3. Следует ли вообще отключить разделение? Если да, то как?
+0

Спросите на https://groups.google.com/forum/#!forum/masstransit-discuss – stuartd

+0

@stuartd Спасибо, я разместил тот же вопрос на этом форуме. Не знаете, как работают группы Google - возможно, он нуждается в проверке или что-то в этом роде, но я не могу видеть свой вопрос нигде. Я отправил его снова, чтобы убедиться, но после нажатия «POST» он просто исчезает и перенаправляется на главную страницу. – hofnarwillie

ответ

0

Шина обслуживания имеет предел в 256 000 для сообщения и включает в себя конверт сериализации, окружающий тело сообщения. Если вы видите размер сообщения 1,9 МБ в ошибке, вы явно нажимаете довольно большое сообщение.

Посмотрите более внимательно на размер вашего сообщения, и если у вас есть такие вещи, как вложения или двоичные данные в сообщении, рассмотрите возможность использования функции MessageData<> для отправки бинарной полезной нагрузки вне диапазона.

+0

Спасибо. Используя проводник Bus Bus для просмотра сообщения, он говорит, что «Размер» - «106330». Я предполагаю, что это относится к байтам, потому что при проверке размера тела JSON он немного меньше (что коррелирует с ожидаемым размером, включая конверт). Итак, мой вопрос по-прежнему стоит, почему он думал, что сообщение составляет 1,9 МБ? Нет вложений и двоичных данных. – hofnarwillie

+0

Мне это кажется странным, я знаю, что у нас есть много сервисов, работающих в Azure, как Cloud Services, которые отлично работают с Service Bus в Azure. –

 Смежные вопросы

  • Нет связанных вопросов^_^