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