Что заставит MSMQ помещать сообщения, предназначенные для очередей в локальной системе, в исходящие очереди?

MSMQ поддерживает тип очереди под названием «Исходящие очереди». Эти очереди используются службой MSMQ для хранения сообщений, предназначенных для серверов, с которыми она не может связаться при создании сообщения. Это специальные временные очереди, которые отделены от обычных публичных и частных очередей.

Недавно я столкнулся со сценарием, когда некоторые сообщения, предназначенные для локальной системы (то есть того же компьютера, который сгенерировал сообщение), оказываются в одной из «исходящих очередей». При детализации исходящих очередей с помощью консоли управления можно увидеть, что адресат имеет правильную информацию о пути для локальной системы и очереди. В этом конкретном сценарии сообщения, хранящиеся в этих «исходящих очередях», никогда не доставляются в правильную очередь. Остальные остались там, фактически потеряны.

Некоторые сообщения, предназначенные для очередей в локальной системе, включая сообщения для тех же очередей, которые указаны в «Исходящих очередях», доставляются нормально. Когда сообщения попадают в «Исходящие очереди», это кажется случайным. То есть: одни будут работать нормально, другие - нет.

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

Что заставит MSMQ помещать сообщения, предназначенные для очередей в локальной системе, в «Исходящие очереди»? Может быть, служба MSMQ не может связаться с собой для отправки сообщения? Система довольно загружена (80% + загрузка ЦП). Может ли MSMQ не хватать ресурсов, когда он это сделает?


person Mike Chess    schedule 22.01.2010    source источник


Ответы (1)


В прошлом я видел проблемы с MSMQ в отношении DNS. Попробуйте поместить полную запись DNS в файл C: \ Windows \ System32 \ Drivers \ etc \ HOSTS, чтобы узнать, поможет ли это.

Не уверен, почему здесь возникла проблема с DNS, но это может помочь.

person Clarence Klopfstein    schedule 23.01.2010
comment
Я не думаю, что проблема в DNS. Обычно мы создаем экземпляры очереди с полным доменным именем как часть строки подключения. Проверка связи по имени работает, когда элементы застревают в исходящей очереди. Итак, похоже, что MSMQ должен забрать и начать отправку, но это не так. - person Mike Chess; 28.01.2010