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

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

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

Síntomas

El adaptador de Microsoft BizTalk Server para MQSeries se configura para recibir mensajes de un administrador de colas MQSeries en clúster. 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 en clúster. Cuando se produce este comportamiento, se registra el siguiente evento en el registro de aplicación:

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

Nota:

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

Solución alternativa

Para solucionar 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"
    

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

  3. Guarde el código siguiente en un archivo y asígnele el nombre Shutdownmqadapter.vbs. Puede guardar el archivo en cualquier disco que no sea el disco de cuó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 de 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 el Programador de tareas, seleccione Acción>Create Tarea básica.

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

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 de MQSAgent COM+ diferente. Pueden tener 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 en clúster en un rol de clúster de conmutación por error, no debe agrupar la aplicación MQSAgent COM+. Esto se debe a que DLLHost.exe, que ejecuta la aplicación COM+, no es compatible con el clúster. Debe tener la aplicación MQSAgent COM+ instalada y configurada individualmente en ambos nodos.
Para garantizar la alta disponibilidad, asegúrese de usar el recurso de queue manager de IBM MQ agrupado y 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