Quando utilizar fluxos de agregação, você pode observar que ocorrem exceções ou congelamentos do banco de dados. Este tópico informa como manipulá-las.
Antes de começar:
Para concluir esta tarefa, você deve ter concluído as tarefas a seguir:
Se for detectado um downstream de um nó AggregateReply, o intermediário emitirá uma exceção. Outro nó no fluxo de mensagens também pode emitir uma exceção utilizando a instrução ESQL THROW. Em qualquer caso, quando uma exceção é emitida, ela é capturada de um de dois locais:
A tabela a seguir lista eventos e o que ocorre a uma exceção emitida downstream do nó AggregateReply.
Evento | Mensagem Propagada | Terminal de Saída | Exceção Capturada em |
---|---|---|---|
Uma resposta esperada chega no nó de entrada e é transmitida para o terminal In do nó AggregateReply. É a última resposta necessária para concluir uma agregação. | Mensagem de resposta agregada contendo todas as respostas | Saída | Nó Input |
Uma resposta inesperada chega no nó de entrada e é transmitida para o nó AggregateReply. Ela não é reconhecida como uma resposta válida e a propriedade Tempo Limite de Mensagem Desconhecido é definida como 0. | Mensagem recebida | Desc. | Nó Input |
Um tempo limite ocorre porque todas as respostas de uma agregação ainda não chegaram. | Mensagem de resposta agregada contendo todas as respostas que foram recebidas | Tempo Limite | Nó AggregateReply |
Um tempo limite desconhecido ocorre porque uma mensagem retida não foi identificada como sendo uma resposta válida. | Mensagem retida | Desc. | Nó AggregateReply |
Descobre-se que uma agregação foi concluída em algum momento diferente de quando a última resposta chegou. | Mensagem de resposta agregada contendo todas as respostas | Saída | Nó AggregateReply |
Se desejar tratar erros que ocorrem em fluxos de agregação, é necessário capturar estas exceções em todas as instâncias de cada um destes nós no fluxo de mensagens. Para isso:
Se desejar uma abordagem unificada para o manuseio de erros, conecte os terminais catch de todos esses nós com uma única seqüência de nós ou crie um subfluxo que manuseie erros de uma forma única e consistente e que conecte esse subfluxo a cada terminal catch.
O exemplo ESQL abaixo mostra como incluir um cabeçalho MQMD e como transmitir as respostas recebidas pelo nó AggregateReply:
-- Incluir MQMD SET OutputRoot.MQMD.Version = 2; . -- Incluir respostas consolidadas na mensagem de saída SET OutputRoot.XML.Data.Parsed = InputRoot.ComIbmAggregateReplyBody; .
Se deseja propagar a informação sobre a exceção da mensagem de saída, você também deve definir a propriedade do modo Compute do nó Compute para um valor que inclua a Exceção.
Os nós AggregateRequest e AggregateReply acessam o banco de dados do intermediário para gravar e ler informações relacionadas ao processamento de pedidos agregados na tabela BAGGREGATE. Os congelamentos podem ocorrer quando vários recursos tentam acessar tabelas do banco de dados ao mesmo tempo.
Para prevenir o conflito do banco de dados:
Se esse problema ocorrer, desative o próximo travamento de teclas, digitando o seguinte em uma janela de comandos do DB2:
db2set DB2_RR_TO_RS=YES
Quando esse comando for concluído, inicie novamente o gerenciador do banco de dados do DB2. Esse comando não possui nenhum outro efeito sobre a operação desse banco de dados.
Se estiver utilizando outro banco de dados, esses congelamentos não ocorrerão.
Conceitos relacionados
Fluxos de Mensagem
Agregação de Fluxo de Mensagens
Tarefas relacionadas
Configurando Fluxos de Agregação
Criando o Fluxo de Difusão de Agregação
Criando um Fluxo de Recepção de Agregação
Associando Fluxos de Agregação de Difusão e Recepção
Definindo Tempos Limites para Agregação
Utilizando Vários Nós AggregateControl
Tratando Erros em Fluxos de Mensagens
Projetando um Fluxo de Mensagens
Criação de um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Referências relacionadas
Nó AggregateControl
Nó AggregateReply
Nó AggregateRequest
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ac12340_ |