Как изменить конфигурацию Msmq из режима рабочей группы в режим домена?

Существует публичная очередь с именем queue1 на машине A. Я хочу отправлять сообщения в эту очередь с машины B. Чтобы добиться этого, я написал этот код на C#.

if (MessageQueue.Exists("machineA\queue1"))
{
    label1.Text = "queue found";
}
else
{
    label1.Text = "queue could not be found";
}

Но Exists() возврат метода false на машине B. Тот же код хорошо работает на машине C.

Я нашел кое-что, связанное с режимом домена msmq и режимом рабочей группы. Я думаю, что MSMQ установлен в режиме Workgoup на компьютере B.

Как я могу изменить эту конфигурацию из режима рабочей группы в режим домена?

4 ответа

HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\

Проверьте данные для REG_DWORD workgroup, Это 1 или 0?

  • 1 - режим рабочей группы.
  • 0 режим AD

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

Работаете ли вы в режиме домена или рабочей группы, определяется, установили ли вы MSMQ на контроллере домена или на рядовом сервере. Подробную информацию о различиях между этими двумя режимами можно найти здесь: https://support.microsoft.com/en-us/kb/884974/

MSMQ 1.0 используется только для поддержки режима домена. Текущая версия MSMQ - 5.0.

Далее вы можете увидеть довольно интересное поведение, когда вы устанавливаете MSMQ на своем контроллере домена, флаг вашей рабочей группы постоянно возвращается в 1 после каждого перезапуска службы MSMQ. Это означает, что вы должны предоставить учетной записи сетевой службы разрешение Создать объекты конфигурации MSMQ для объекта компьютера в доменных службах Active Directory, прежде чем устанавливать функцию интеграции служб каталогов на компьютер, который является контроллером домена.

Вы можете найти подробную информацию о том, как это сделать, здесь: https://technet.microsoft.com/en-us/library/cc730960.aspx
MSMQ работает под (менее привилегированной) учетной записью сетевой службы вместо (все мощной) учетной записи локальной системы, начиная с версии 4.0 (Vista/Server 2008)

Поэтому, чтобы ответить на вопрос mkus более прямо в "настройке" режима домена, достаточно установить MSMQ на контроллере домена и убедиться, что для учетной записи сетевой службы установлены соответствующие разрешения. Как только это будет сделано, вы увидите, что он работает в доменном режиме, а флаг рабочей группы автоматически переключается на 0, чтобы это отражать.

Также пара ссылок, чтобы прояснить проблемы, связанные с разрешениями объектов MSMQ и когда / почему вам нужно их установить: http://blogs.msdn.com/b/johnbreakwell/archive/2009/08/03/default-msmq-queue-permissions-have-changed-in-msmq-4-0.aspx. Вкратце, начиная с MSMQ 4.0 Все и анонимный вход в систему были удалены из списков ACL объектов MSMQ по умолчанию в качестве меры предосторожности против DoS-атак (хотя есть исключения из этого изменения, и режим рабочей группы является одним из них).

И, как вы можете прочитать в статье Technet ниже, вам необходимо предоставить определенные права доступа объектам MSMQ либо к сетевой службе, либо к учетным записям компьютеров при установке функции службы маршрутизации на компьютере под управлением Windows Server 2008 R2 (или более поздней версии), который не является доменом. контроллер ИЛИ при установке функции интеграции службы каталогов в очереди сообщений на компьютере под управлением Windows Server 2008 R2 (или более поздней версии), который является контроллером домена. Подробности смотрите здесь: https://technet.microsoft.com/en-us/library/cc749102(v=ws.10).aspx

Запустите диспетчер серверов на компьютере, на котором размещена очередь. Щелкните правой кнопкой мыши "Функции" и выберите "Добавить функции".

Разверните в разделе "Очередь сообщений" и "Службы очереди сообщений". Вы должны увидеть флажок для интеграции службы каталогов.

Проверьте это и нажмите "Установить".

Обычно вам нужно перезагрузить сервер, чтобы показать изменения.

Я столкнулся с некоторыми проблемами, независимо от того, сколько я установил или удалил MSMQ или перезапустил, я все еще не мог использовать очередь. Поэтому я хотел опубликовать несколько ссылок здесь

http://support.microsoft.com/kb/935498

Когда речь заходит о "Обойти эту проблему, используйте Microsoft Active Console (MMC) пользователей и компьютеров Active Directory...". Ниже описано, как вы это делаете.

Как удалить из активного каталога http://technet.microsoft.com/en-us/library/cc773660(v=WS.10).aspx"Удалить устаревшие компьютерные объекты"- это та часть, которая вас интересует.

Я также обнаружил эту приятную ошибку в журнале событий "Служба очереди сообщений не присоединится к домену. В новом домене существует объект конфигурации MSMQ (msmq) с идентификатором, отличным от идентификатора службы. Удалите объект конфигурации MSMQ в новый домен, перезапустите службу очереди сообщений и снова войдите в систему. ", что помогло указать им путь.

Я столкнулся с этой проблемой для Windows Server 2016, когда даже подумал, что я меняю значение реестра на режим домена "0", он возвращается к "1" после перезапуска сервера.

Чтобы решить проблему в OS 2016, нам необходимо удалить указанную ниже функцию MSMQ, поскольку они устарели с OS 2016 и далее. Поддержка многоадресной рассылки триггера очереди сообщений Служба маршрутизации

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