MSMQ error Недостаточно ресурсов Заполняется транзакционная очередь недоставленных сообщений

Работал система, которая использует несколько msmq на одной и той же машине, работал нормально в течение дня, а затем я получаю сообщение об ошибке "Недостаточно ресурсов" при попытке отправить сообщение в одну из очередей. Исследовано с помощью этого сообщения в блоге:

http://blogs.msdn.com/b/johnbreakwell/archive/2006/09/18/761035.aspx

Я не вижу там ничего о расследовании очереди мертвых писем.

Посмотрел очереди, понял, что единственной очередью, в которой остались какие-либо сообщения, была транзакционная очередь недоставленных сообщений, удалил ее, теперь приложения запускаются снова и могут публиковать сообщения в частных очередях.

Я предполагаю, что мой главный вопрос - объясните мне очередь мертвых писем и как я могу справиться с этим.

Благодарю.

2 ответа

Решение

В блоге не будет ничего про очередь мертвых писем, так как это просто очередь, как и любая другая.

У вас есть сообщения в DLQ, потому что вы включили ведение журнала отрицательных источников в своем приложении. Состояние ошибки означало, что исходные сообщения умерли и оказались в DLQ в соответствии с запросом вашего приложения. В идеале, если вы используете DLQ, у вас есть отдельный поток, ищущий сообщения в нем.

Вы должны включить мониторинг общего количества сообщений на сервере, чтобы вы могли получать раннее предупреждение, когда сообщения начинают неожиданно накапливаться.

ура
Джон Брейквелл

Сегодня столкнулся с этой проблемой с нашей настройкой MSMQ/NServiceBus. Насколько я понимаю, ручная очистка очереди будет перемещать сообщения в очередь мертвых сообщений транзакции. Очистка этой очереди решила проблему для нас.

Другие вопросы по тегам