MSMQ error Недостаточно ресурсов Заполняется транзакционная очередь недоставленных сообщений
Работал система, которая использует несколько msmq на одной и той же машине, работал нормально в течение дня, а затем я получаю сообщение об ошибке "Недостаточно ресурсов" при попытке отправить сообщение в одну из очередей. Исследовано с помощью этого сообщения в блоге:
http://blogs.msdn.com/b/johnbreakwell/archive/2006/09/18/761035.aspx
Я не вижу там ничего о расследовании очереди мертвых писем.
Посмотрел очереди, понял, что единственной очередью, в которой остались какие-либо сообщения, была транзакционная очередь недоставленных сообщений, удалил ее, теперь приложения запускаются снова и могут публиковать сообщения в частных очередях.
Я предполагаю, что мой главный вопрос - объясните мне очередь мертвых писем и как я могу справиться с этим.
Благодарю.
2 ответа
В блоге не будет ничего про очередь мертвых писем, так как это просто очередь, как и любая другая.
У вас есть сообщения в DLQ, потому что вы включили ведение журнала отрицательных источников в своем приложении. Состояние ошибки означало, что исходные сообщения умерли и оказались в DLQ в соответствии с запросом вашего приложения. В идеале, если вы используете DLQ, у вас есть отдельный поток, ищущий сообщения в нем.
Вы должны включить мониторинг общего количества сообщений на сервере, чтобы вы могли получать раннее предупреждение, когда сообщения начинают неожиданно накапливаться.
ура
Джон Брейквелл
Сегодня столкнулся с этой проблемой с нашей настройкой MSMQ/NServiceBus. Насколько я понимаю, ручная очистка очереди будет перемещать сообщения в очередь мертвых сообщений транзакции. Очистка этой очереди решила проблему для нас.