Ao utilizar fluxos de agregação, você pode descobrir a ocorrência de exceções. 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ó de Entrada |
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ó de Entrada |
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:
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.