L’adaptateur MQSeries ne récupère plus les messages d’un gestionnaire de files d’attente MQSeries en cluster lorsque le gestionnaire de files d’attente bascule vers un autre nœud de cluster
Cet article vous aide à contourner le problème où l’adaptateur MQSeries ne récupère plus les messages d’un gestionnaire de files d’attente MQSeries en cluster lorsque le gestionnaire de files d’attente bascule vers un autre nœud de cluster.
Version de produit d’origine : BizTalk Server 2020, BizTalk Server 2016, BizTalk Server 2013, BizTalk Server 2010, BizTalk Server 2009
Numéro de la base de connaissances d’origine : 893059
Symptômes
Vous configurez l’adaptateur Microsoft BizTalk Server pour MQSeries pour recevoir des messages d’un gestionnaire de files d’attente MQSeries en cluster. Si le gestionnaire de files d’attente bascule vers un autre nœud de cluster, l’adaptateur MQSeries ne récupère plus les messages de la file d’attente en cluster. Lorsque ce comportement se produit, l’événement suivant est journalisé dans le journal des applications :
Type d'événement : Avertissement
Source d’événement : BizTalk Server 20xx
Catégorie d’événement : BizTalk Server 20xx
ID d’événement : 5740
Date : 31/12/2006 Heure : 11:12:13
Utilisateur : N/A
Ordinateur :
Description : L’adaptateur « MQSeries » a déclenché un message d’erreur. Détails « Erreur rencontrée lors de l’ouverture du nom du Gestionnaire de files d’attente = code motif MYQMNAME = 2059 ».
Note
Dans cette entrée de journal, <20xx>
représente le numéro de version réel et <MYQMNAME>
représente le nom réel du Gestionnaire de files d’attente.
Solution de contournement
Pour contourner ce problème, créez une tâche planifiée sur les deux nœuds. Pour ce faire, procédez comme suit :
Sur le nœud actif, ouvrez Services.msc. Vous devez voir deux services MSDTC répertoriés : un qui est local et n’a pas de GUID, et un qui est en cluster et qui a un GUID.
Ouvrez une invite de commandes avec élévation de privilèges et exécutez la commande suivante :
sc queryex | find /I "Transaction"
La sortie de commande contient le GUID que vous devez utiliser pour le script dans cette procédure. GUID :
Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)
Enregistrez le code suivant dans un fichier et nommez le fichier Shutdownmqadapter.vbs. Vous pouvez enregistrer le fichier sur n’importe quel disque autre que le disque de quorum.
Note
Dans ce code, le GUID indiqué (
01234567-89ab-cdef-0123-456789abcdef
) est un espace réservé. Remplacez ce GUID par le GUID MSDTC en cluster réel que vous avez noté à l’étape 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
Sélectionnez Démarrer, taper une tâche, puis sélectionner Planificateur de tâches dans la liste des résultats.
Dans le Planificateur de tâches, sélectionnez Action>Créer une tâche de base.
Exécutez les écrans de l’Assistant pour créer une tâche planifiée qui exécute quotidiennement le fichier Shutdownmqagent.vbs .
Note
Pour l’étape 6, définissez la planification pour commencer à minuit et répétez toutes les 1 minute pendant 24 heures.
Les versions antérieures de BizTalk peuvent avoir un GUID COM+ MQSAgent différent. Ils peuvent avoir 6D06157A-730B-4CB3-BD11-D48AC6B8A4BB
au lieu de C691D827-19A0-42E2-B5E8-2892401481F5
. Par conséquent, vous devrez peut-être modifier le script existant après avoir mis à niveau le produit.
Plus d’informations
Même si le gestionnaire de files d’attente IBM MQ s’exécute en tant que ressource en cluster dans un rôle de cluster de basculement, vous ne devez pas clusterr l’application MQSAgent COM+. Cela est dû au fait que DLLHost.exe, qui exécute l’application COM+, n’est pas compatible avec le cluster. L’application COM+ MQSAgent doit être installée et configurée individuellement sur les deux nœuds.
Pour garantir la haute disponibilité, veillez à utiliser à la fois la ressource du gestionnaire de files d’attente IBM MQ en cluster et la ressource MSDTC en cluster dans le même rôle de cluster, ainsi que le script de surveillance de la section Solution de contournement .
S’applique à
- BizTalk Server 2020 Enterprise
- BizTalk Server 2016 Enterprise
- BizTalk Server 2013 R2 Entreprise
- BizTalk Server 2013 Entreprise
- BizTalk Server Enterprise 2010
- BizTalk Server 2009 Enterprise