2013-11-01 2 views
2

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

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

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

+0

Что значит «слишком большой для получателя»? Вы говорите о сообщениях больше 4 МБ? – gleng

+0

@gleng: Сообщения, которые превышают ReadQuotas, настроенные на стороне сервера. – Rob

+0

Вы проверили, было ли сообщение перенесено в подземелье? Сообщение могло быть воспринято как ядовитое сообщение. –

ответ

1

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

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