WCF / MSMQ «истекло время получения» проблема очереди недоставленных сообщений - PullRequest
1 голос
/ 18 ноября 2009

Я тестирую некоторые программы, которые я написал. Тест помещает сообщения в MSMQ через WCF со скоростью, превышающей скорость, с которой мое программное обеспечение может их обработать. Это не должно быть проблемой, так как это является целью MSMQ, но если я поставлю в очередь достаточно сообщений, на которые мое программное обеспечение уходит более 24 часов, эти сообщения будут перемещены в « транзакционные сообщения недоставленных сообщений"очередь и их класс установлен на" Время, которое должно быть получено, истекло".

Единственная конфигурируемая мной конфигурация - это сама привязка:

<bindings>
  <netMsmqBinding>
    <binding timeToLive="7.00:00:00" /> <!-- 7 days -->
...

Я использую эту привязку как при постановке в очередь, так и при снятии очереди, и она, похоже, не работает. Установка значения 2 секунды имеет эффект, но установка его дольше, чем 1 день, включая максимальное значение (24 дня), не имеет значения.

Есть ли другой способ удлинить это время получения? Я не могу найти ничего другого для настройки (при отправке сообщения или создании очереди).

Ответы [ 2 ]

2 голосов
/ 23 ноября 2009

Атрибут timeToLive на самой привязке, по сути, является единственной необходимой для настройки. Я вернулся через все свои конфигурации и, очевидно, пропустил место. Из раздела «Программирование служб WCF»:

Только свойство TimeToLive относящиеся к клиенту публикации и не имеет никакого влияния на стороне обслуживания, ни Может ли служба изменить это. Время жить по умолчанию один день.

Все выходные я проводил тестирование, передавая 1 000 000 сообщений. Ничего еще не попало в очередь мертвых писем.

0 голосов
/ 18 ноября 2009

Я не уверен на 100%, но я полагаю, что свойство TimeToLive только устанавливает свойство msmq Time-To-Reach-Queue, но я не знаю встроенного способа установки Time- Собственность, подлежащая получению ...

...