Что происходит с сообщениями, отправленными через MSMQ и WCF, которые превышают квоту получателей?

Если я использую WCF отправить сообщение, например, Httpи сообщение слишком велико для получателя, я получаю сообщение об ошибке отправителя и могу предпринять действия.

Если я использую WCF отправить сообщение поверх MSMQ (нетранзакционный), и сообщение слишком велико для получателя, оно исчезает, и я не получаю указаний ни на стороне клиента, ни на стороне сервера.

Есть ли способ, которым я могу наблюдать (и принимать меры) для таких случаев?

1 ответ

Предполагая, что ваша цель - MSMQ (независимо от WCF), вот несколько моментов, которые следует рассмотреть.

  1. Максимальный размер одного сообщения для публикации в MSMQ составляет 4 МБ.
  2. Если попытаться опубликовать сообщение размером более 4 МБ в MSMQ, вы получите следующую ошибку: [System.ServiceModel.ExceptionDetail]: Внутренняя ошибка: недостаточно ресурсов для выполнения операции.
  3. Если ваше требование состоит в том, чтобы публиковать сообщения размером более 4 Мб в MSMQ, то для этого есть несколько решений, например:
    • Использование NServiceBus
    • Сжатие сообщения во время публикации и распаковка то же самое в поиске.
    • Реализация логики NServiceBus, которая заключается в записи сообщения в файл в общем расположении и сохранении местоположения файла в сообщении.
Другие вопросы по тегам