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:
Nel nodo attivo aprire Services.msc. Dovrebbero essere elencati due servizi MSDTC: uno locale e senza GUID, uno cluster e un GUID.
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)
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
Selezionare Avvia, digitare attività e quindi selezionare Utilità di pianificazione nell'elenco dei risultati.
In Utilità di pianificazione selezionare Azione>Create Attività di base.
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