Не могу получить сообщения msmq - PullRequest
0 голосов
/ 03 февраля 2012

У меня проблема с приложением, которое использует msmq: на определенной машине это приложение может отправлять сообщения msmq, но, похоже, не получает никаких сообщений.

Это происходит только на определенной машине (с использованием XP).

Как устранить неполадку?Где я могу найти подсказки о том, где проблема возникает и почему?

На удаленной машине сообщения застряли в исходящей очереди.

Эта машина раньше могла получать сообщения иоднажды это перестало работать.Непонятно, что произошло на машине, что может быть связано с потерей способности принимать сообщения.

Я проверил, что порт 1801 открыт.

(я не нашелчто-нибудь в программе просмотра событий)

Ответы [ 4 ]

1 голос
/ 06 февраля 2012

Получатель прослушивает 1801, но может ли отправитель подключиться к этому порту? На отправителе перейдите в командную строку и выполните: telnet receiveHostName 1801
Это проверит, можно ли открыть соединение с этим портом. Может быть, брандмауэр или другое программное обеспечение блокирует трафик?

1 голос
/ 03 февраля 2012

Когда вы говорите «получать» сообщения, вы имеете в виду, что вы не можете удалить сообщения из очереди или что никакие сообщения не могут быть доставлены на аппарат?

Самая распространенная причина - это разрешения - самый простой тест длято есть установить Полный доступ для всех и анонимный вход.

=== 4 февраля ====

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

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

=== 8 февраля ====

ОК, если "DIRECT = TCP: 1.2.3.4 \Приватное $ \ MyQueue "работает, но" DIRECT = OS: имя_сервера \ Private $ \ MyQueue "не соответствует проблеме разрешения имен.
Проверьте отправляющий аппарат на IP-адрес DNS-сервера, который он использует для разрешения имен;проверьте этот сервер для записей для имени машины назначения.На отправляющем компьютере проверьте файлы HOSTS и LMHOSTS на наличие записей для имени компьютера назначения.Вы даже можете попробовать добавить запись в HOSTS, которая отображает имя машины назначения на IP-адрес.

Cheers
John Breakwell

0 голосов
/ 06 февраля 2012

Я обычно запускаю приложение в Network-Service и предоставляю полный набор разрешений для этого пользователя для очередей. Если у меня есть настольная конечная точка, попробуйте подключиться к обмену сообщениями с пользователем службы сети.

Попробуйте, это может сработать.

0 голосов
/ 03 февраля 2012

Для устранения проблем с очередями сообщений:

  • Используйте приложение для проверки компьютера и очередей.Предложите написать свой собственный, или что-то вроде QueueExplorer demo .Это самый быстрый способ определить причину проблемы: разрешения / безопасность конечной точки, работа в сети, искаженное сообщение и т. Д.

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

...