O Adaptador de MQSeries não recupera mais mensagens de um gerenciador de filas MQSeries clusterizado quando o gerenciador de filas falha em um nó de cluster diferente
Este artigo ajuda você a contornar o problema em que o Adaptador de MQSeries não recupera mais mensagens de um gerenciador de filas MQSeries clusterizado quando o gerenciador de filas falha em um nó de cluster diferente.
Versão original do produto: BizTalk Server 2020, BizTalk Server 2016, BizTalk Server 2013, BizTalk Server 2010, BizTalk Server 2009
Número de KB original: 893059
Sintomas
Você configura o Microsoft BizTalk Server Adaptador para MQSeries para receber mensagens de um gerenciador de filas MQSeries clusterizado. Se o gerenciador de filas falhar em um nó de cluster diferente, o Adaptador MQSeries não recuperará mais as mensagens da fila clusterada. Quando esse comportamento ocorre, o seguinte evento é registrado no log do aplicativo:
Tipo de Evento: Aviso
Fonte do evento: BizTalk Server 20xx
Categoria do evento: BizTalk Server 20xx
ID do evento: 5740
Data: 31/12/2006 Hora: 11:12:13
Usuário: N/A
Computador:
Descrição: o adaptador "MQSeries" gerou uma mensagem de erro. Detalhes "Erro encontrado ao abrir o nome do Gerenciador de Filas = CÓDIGO DE RAZÃO MYQMNAME = 2059".
Observação
Nesta entrada de log, <20xx>
representa o número da versão real e <MYQMNAME>
representa o nome real do Gerenciador de Filas.
Solução alternativa
Para contornar esse problema, crie uma tarefa agendada em ambos os nós. Para fazer isso, siga estas etapas:
No nó ativo, abra Services.msc. Você deve ver dois serviços MSDTC listados: um que é local e não tem GUID, e um que está clusterizado e tem um GUID.
Abra um prompt de comando elevado e execute o seguinte comando:
sc queryex | find /I "Transaction"
A saída de comando contém o GUID que você deve usar para o script neste procedimento. O GUID:
Distributed Transaction Coordinator (01234567-89ab-cdef-0123-456789abcdef)
Salve o código a seguir em um arquivo e nomeie o arquivo Shutdownmqadapter.vbs. Você pode salvar o arquivo em qualquer disco diferente do disco de quorum.
Observação
Neste código, o GUID indicado (
01234567-89ab-cdef-0123-456789abcdef
) é um espaço reservado. Substitua este GUID pelo GUID MSDTC clusterizado real que você observou na etapa 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
Selecione Iniciar, digite tarefa e selecione Agendador de Tarefas na lista de resultados.
No Agendador de Tarefas, selecione Ação>Create Tarefa Básica.
Execute as telas do assistente para criar uma tarefa agendada que executa o arquivoShutdownmqagent.vbs diariamente.
Observação
Para a etapa 6, defina a agenda para começar à meia-noite e repita a cada 1 minuto por 24 horas.
Versões anteriores do BizTalk podem ter um GUID COM+ do MQSAgent diferente. Eles podem ter 6D06157A-730B-4CB3-BD11-D48AC6B8A4BB
em vez de C691D827-19A0-42E2-B5E8-2892401481F5
. Portanto, talvez você precise alterar o script existente depois de atualizar o produto.
Mais informações
Mesmo que o gerenciador de filas do IBM MQ esteja sendo executado como um recurso clusterizado em uma função de cluster de failover, você não deve clusterizar o aplicativo COM+ do MQSAgent. Isso ocorre porque DLLHost.exe, que está executando o aplicativo COM+, não está ciente do cluster. Você deve ter o aplicativo MQSAgent COM+ instalado e configurado individualmente em ambos os nós.
Para garantir alta disponibilidade, certifique-se de usar o recurso clusterizado do gerenciador de filas do IBM MQ e o recurso MSDTC clusterizado na mesma função de cluster, juntamente com o script de monitoramento da seção Solução alternativa .
Aplicável 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