Адаптер MQSeries больше не получает сообщения из диспетчера кластеризованных очередей MQSeries при отработке отказа диспетчера очередей на другой узел кластера.

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

Исходная версия продукта: BizTalk Server 2020 г., BizTalk Server 2016 г., BizTalk Server 2013 г., BizTalk Server 2010 г., BizTalk Server 2009 г.
Исходный номер базы знаний: 893059

Симптомы

Вы настраиваете Microsoft BizTalk Server Adapter для MQSeries для получения сообщений от диспетчера кластеризованных очередей MQSeries. Если диспетчер очередей выполняет отработку отказа на другой узел кластера, адаптер MQSeries больше не получает сообщения из кластеризованной очереди. При возникновении такого поведения в журнале приложений регистрируется следующее событие:

Тип события: Предупреждение
Источник события: BizTalk Server 20xx
Категория события: BizTalk Server 20xx
Идентификатор события: 5740
Дата: 31.12.2006 Время: 11:12:13
Пользователь: Н/Д
Компьютере:
Описание. Адаптер "MQSeries" вызвал сообщение об ошибке. Сведения об ошибке при открытии имени диспетчера очередей = MYQMNAME Reason code = 2059.".

Примечание.

В этой записи <20xx> журнала представляет фактический номер версии и <MYQMNAME> фактическое имя диспетчера очередей.

Обходной путь

Чтобы обойти эту проблему, создайте запланированную задачу на обоих узлах. Для этого выполните следующие действия:

  1. На активном узле откройте Services.msc. Вы увидите две службы MSDTC: одна из них является локальной и не имеет GUID, а другая — кластеризованной и имеет GUID.

  2. Из командной строки с повышенными привилегиями запустите следующую команду:

    sc queryex | find /I "Transaction"
    

    Выходные данные команды содержат GUID, который необходимо использовать для скрипта в этой процедуре. Идентификатор GUID: Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)

  3. Сохраните следующий код в файл и присвойте файлу имяShutdownmqadapter.vbs. Файл можно сохранить на любом диске, кроме диска кворума.

    Примечание.

    В этом коде указанный ИДЕНТИФИКАТОР GUID (01234567-89ab-cdef-0123-456789abcdef) является заполнителем. Замените этот GUID фактическим кластеризованным ИДЕНТИФИКАТОРом MSDTC, который вы записали на шаге 2.

    Option Explicit
    On Error Resume Next
    Dim sComputerName, oWMIService, colRunningServices, oService, colProcessList, objProcess 
    If Wscript.Arguments.Count = 0 Then  
      sComputerName = "."  
      Call ServStat  
      Wscript.Quit
    End If
    Sub ServStat
    Set oWMIService  = GetObject("winmgmts:" _  
      & "{impersonationLevel=impersonate}!\\" & sComputerName& "\root\cimv2")
    Set colRunningServices = oWMIService.ExecQuery _  
      ("Select * from Win32_Service where DisplayName='Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)'")
    For Each oService in colRunningServices  
       'Wscript.Echo oService.DisplayName  & VbTab & oService.State  
       If (oService.State="Stopped") Then
          'Wscript.Echo "Stopped"
          'find the dllhost
           Set colProcessList = oWMIService.ExecQuery ("SELECT * FROM Win32_Process WHERE Name = 'DLLHOST.EXE'")
           For Each objProcess in colProcessList
             If inStr(objProcess.CommandLine, "C691D827-19A0-42E2-B5E8-2892401481F5")>0 Then
                'Wscript.Echo objProcess.ProcessId
                Dim objShell
                Set objShell = CreateObject("WScript.Shell")
                objShell.Run "cmd /k taskkill /F /PID " & objProcess.ProcessId & "& exit"
                WScript.Quit
             End If
           Next  
        End If
    Next
    End Sub
    
  4. Нажмите кнопку Пуск, введите task и выберите Планировщик задач в списке результатов.

  5. В планировщике задач выберите Действие>Create Базовая задача.

  6. Запустите экраны мастера, чтобы создать запланированную задачу, которая ежедневно запускает файлShutdownmqagent.vbs .

Примечание.

Для шага 6 задайте расписание, чтобы начать в полночь и повторять каждые 1 минуту в течение 24 часов.

Более ранние версии BizTalk могут иметь другой идентификатор GUID COM+ MQSAgent. Они могут иметь 6D06157A-730B-4CB3-BD11-D48AC6B8A4BB вместо C691D827-19A0-42E2-B5E8-2892401481F5. Поэтому после обновления продукта может потребоваться изменить существующий скрипт.

Дополнительная информация

Даже если диспетчер очередей IBM MQ работает в качестве кластеризованного ресурса в роли отказоустойчивого кластера, не следует кластерировать приложение COM+ MQSAgent. Это связано с тем, что DLLHost.exe, на котором выполняется приложение COM+, не поддерживает кластер. Необходимо установить и настроить приложение COM+ MQSAgent по отдельности на обоих узлах.
Чтобы обеспечить высокий уровень доступности, используйте кластеризованный ресурс диспетчера очередей IBM MQ и кластеризованный ресурс MSDTC в одной роли кластера вместе со сценарием мониторинга из раздела Обходной путь .

Сфера применения

  • BizTalk Server 2020 Enterprise
  • BizTalk Server 2016 Enterprise
  • BizTalk Server 2013 R2 Enterprise
  • BizTalk Server 2013 Корпоративная
  • BizTalk Server Enterprise 2010 г.
  • BizTalk Server 2009 Enterprise