У меня есть нетранзакционная очередь сообщений на сервере Windows 2008 (версия центра обработки данных) с 31 клиентом. Соединяющиеся серверы не находятся в одной рабочей группе или домене (не знаю, играет ли это роль).
Проблема в том, что очередь принимает сообщения только от некоторых клиентов (на самом деле 9), а сообщения других клиентов теряются.
Я не могу найти сообщение об ошибке в журнале событий Windows. Состояние MSMQ на клиентах говорит «подключен», а очереди недоставленных сообщений пусты ... Если я остановлю службу MSMQ на сервере, сообщения будут правильно поставлены в очередь на клиентских машинах.
Какие еще возможные причины потери сообщений мне следует искать? Может ли такое поведение быть вызвано каким-либо промежуточным компонентом?
Сценарий
Каждый сервер (клиент MSMQ - их 31) каждую полную минуту отправляет сообщение серверу MSMQ (размер сообщения около 40 Кбайт). Если я включаю ведение журнала, я вижу сообщения только с девяти (вместо 31) серверов на сервере MSMQ, остальные сообщения теряются. Полученные сообщения всегда поступают с одних и тех же серверов.
Лицензии не приведут к потере сообщений. Если бы лицензирование было блокирующим, у вас были бы клиенты без клиентской лицензии, которые не могли бы подключиться, а сообщения оставались бы в их исходящей очереди. Сообщения исчезают либо потому, что они были прочитаны, либо потому, что их таймеры TTRQ / TTBR истекли. В журнале событий Windows не будет событий. Вам нужно использовать ведение журнала, чтобы отслеживать, что происходит с сообщениями.