El adaptador de MQSeries ya no recupera mensajes de un administrador de colas de MQSeries agrupado cuando el administrador de colas conmuta por error a otro nodo de clúster

Este artículo le ayuda a solucionar el problema en el que EL ADAPTADOR DE MQSeries ya no recupera mensajes de un administrador de colas de MQSeries agrupado cuando el administrador de colas conmuta por error a otro nodo de clúster.

Versión del producto original:   BizTalk Server 2020, BizTalk Server 2016, BizTalk Server 2013, BizTalk Server 2010, BizTalk Server 2009
Número KB original:   893059

Síntomas

Configure microsoft BizTalk Server adapter para MQSeries para recibir mensajes de un administrador de colas de MQSeries agrupado. Si el administrador de colas conmuta por error a otro nodo de clúster, el adaptador de MQSeries ya no recupera los mensajes de la cola agrupada. Cuando se produce este comportamiento, se registra el siguiente evento en el registro de aplicaciones:

Tipo de evento: Advertencia
Origen de eventos: BizTalk Server 20xx
Categoría de evento: BizTalk Server 20xx
Identificador de evento: 5740
Fecha: 12/31/2006 Hora: 11:12:13 a.m.
Usuario: N/A
Equipo:
Descripción: el adaptador "MQSeries" ha producido un mensaje de error. Detalles "Error encontrado al abrir nombre del administrador de colas = Código de motivo MYQMNAME = 2059".

Nota

En esta entrada de registro, <20xx> representa el número de versión real y representa el nombre real del Administrador de <MYQMNAME> colas.

Solución alternativa

Para evitar este problema, cree una tarea programada en ambos nodos. Para ello, siga estos pasos:

  1. En el nodo activo, abra Services.msc. Debería ver dos servicios MSDTC enumerados: uno que es local y no tiene NINGÚN GUID, y otro que está agrupado y tiene un GUID.

  2. En un símbolo del sistema con privilegios elevados, ejecute el comando siguiente:

    sc queryex | find /I "Transaction"
    

    El resultado del comando contiene el GUID que debe usar para el script en este procedimiento. The GUID: Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)

  3. Guarde el siguiente código en un archivo y asigne un nombre al Shutdownmqadapter.vbs. Puede guardar el archivo en cualquier disco que no sea el disco de quórum.

    Nota

    En este código, el GUID indicado ( 01234567-89ab-cdef-0123-456789abcdef ) es un marcador de posición. Reemplace este GUID por el GUID MSDTC agrupado real que anotó en el paso 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. Seleccione Inicio, escriba tarea y, a continuación, seleccione Programador de tareas en la lista de resultados.

  5. En programador de tareas, seleccione Acción > Crear tarea básica.

  6. Ejecute a través de las pantallas del asistente para crear una tarea programada que ejecute el archivoShutdownmqagent.vbs diario.

Nota

Para el paso 6, establezca la programación para que comience a medianoche y repita cada 1 minuto durante 24 horas.

Las versiones anteriores de BizTalk pueden tener un GUID COM+ de MQSAgent diferente. Es posible que tengan 6D06157A-730B-4CB3-BD11-D48AC6B8A4BB en lugar de C691D827-19A0-42E2-B5E8-2892401481F5 . Por lo tanto, es posible que tenga que cambiar el script existente después de actualizar el producto.

Más información

Incluso si el administrador de colas de IBM MQ se ejecuta como un recurso agrupado en un rol de clúster de conmutación por error, no debe clústerar la aplicación COM+ de MQSAgent. Esto se debe a DLLHost.exe, que ejecuta la aplicación COM+, no es consciente del clúster. Debe tener la aplicación COM+ DE MQSAgent instalada y configurada individualmente en ambos nodos.
Para garantizar la alta disponibilidad, asegúrese de usar tanto el recurso clúster del administrador de colas de IBM MQ como el recurso MSDTC agrupado en el mismo rol de clúster junto con el script de supervisión de la sección Solución alternativa.

Se aplica a

  • BizTalk Server 2020 Enterprise
  • BizTalk Server 2016 Enterprise
  • BizTalk Server 2013 R2 Enterprise
  • BizTalk Server 2013 Enterprise
  • BizTalk Server Enterprise 2010
  • BizTalk Server 2009 Enterprise