L'adapter MQSeries non recupera più i messaggi da un gestore code MQSeries cluster quando il gestore code esegue il failover in un nodo del cluster diverso

Questo articolo consente di risolvere il problema per cui l'adapter MQSeries non recupera più i messaggi da un gestore code MQSeries cluster quando gestione code esegue il failover in un nodo del cluster diverso.

Versione originale del prodotto: BizTalk Server 2020, BizTalk Server 2016, BizTalk Server 2013, BizTalk Server 2010, BizTalk Server 2009
Numero KB originale: 893059

Sintomi

Configurare l'adapter microsoft BizTalk Server per MQSeries per ricevere messaggi da un gestore code MQSeries cluster. Se gestione code esegue il failover in un nodo del cluster diverso, l'adapter MQSeries non recupera più i messaggi dalla coda cluster. Quando si verifica questo comportamento, nel log dell'applicazione viene registrato l'evento seguente:

Tipo evento: Avviso
Origine evento: BizTalk Server 20xx
Categoria di eventi: BizTalk Server 20xx
ID evento: 5740
Data: 31/12/2006 Ora: 11:12:13
Utente: N/D
Computer:
Descrizione: l'adapter "MQSeries" ha generato un messaggio di errore. Dettagli "Errore durante l'apertura del nome di Gestione code = MYQMNAME Codice motivo = 2059.".

Nota

In questa voce di log rappresenta <20xx> il numero di versione effettivo e <MYQMNAME> rappresenta il nome effettivo di Gestione code.

Soluzione alternativa

Per risolvere questo problema, creare un'attività pianificata in entrambi i nodi. A tal fine, attenersi alla seguente procedura:

  1. Nel nodo attivo aprire Services.msc. Dovrebbero essere elencati due servizi MSDTC: uno locale e senza GUID, uno cluster e un GUID.

  2. A un prompt dei comandi con privilegi elevati, eseguire il comando seguente:

    sc queryex | find /I "Transaction"
    

    L'output del comando contiene il GUID che è necessario usare per lo script in questa procedura. The GUID: Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)

  3. Salvare il codice seguente in un file e denominare il file Shutdownmqadapter.vbs. È possibile salvare il file in qualsiasi disco diverso dal disco quorum.

    Nota

    In questo codice il GUID indicato (01234567-89ab-cdef-0123-456789abcdef) è un segnaposto. Sostituire questo GUID con il GUID MSDTC cluster effettivo annotato nel passaggio 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. Selezionare Avvia, digitare attività e quindi selezionare Utilità di pianificazione nell'elenco dei risultati.

  5. In Utilità di pianificazione selezionare Azione>Create Attività di base.

  6. Eseguire le schermate della procedura guidata per creare un'attività pianificata che esegue quotidianamente il file Shutdownmqagent.vbs .

Nota

Per il passaggio 6, impostare la pianificazione per iniziare a mezzanotte e ripetere ogni 1 minuto per 24 ore.

Le versioni precedenti di BizTalk possono avere un GUID COM+ MQSAgent diverso. Possono avere 6D06157A-730B-4CB3-BD11-D48AC6B8A4BB invece di C691D827-19A0-42E2-B5E8-2892401481F5. Potrebbe pertanto essere necessario modificare lo script esistente dopo l'aggiornamento del prodotto.

Ulteriori informazioni

Anche se gestione code IBM MQ è in esecuzione come risorsa cluster in un ruolo del cluster di failover, non è consigliabile raggruppare l'applicazione COM+ MQSAgent. Ciò è dovuto al fatto che DLLHost.exe, che esegue l'applicazione COM+, non è compatibile con il cluster. È necessario che l'applicazione MQSAgent COM+ sia installata e configurata singolarmente in entrambi i nodi.
Per garantire la disponibilità elevata, assicurarsi di usare sia la risorsa di gestione code IBM MQ cluster che la risorsa MSDTC cluster nello stesso ruolo del cluster insieme allo script di monitoraggio della sezione Soluzione alternativa .

Si applica 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