Criando um Fluxo de Recepção de Agregação

O fluxo de recepção de agregação recebe as respostas para as mensagens de pedido enviadas pelo fluxo de difusão e constrói uma mensagem de resposta combinada contendo todas as respostas recebidas.

Antes de começar:

Para concluir esta tarefa, você deve ter concluído a seguinte tarefa:

Dependendo dos valores de tempo limite especificados, a mensagem de resposta combinada pode ser gerada antes da recepção de todas as respostas pelo fluxo de recepção.

Para rever um exemplo de um fluxo de recepção, consulte a amostra fornecida com o .

para criar o fluxo de recepção:

  1. Alterne para o .
  2. Crie um fluxo de mensagens para fornecer o processamento de recepção.
  3. Inclua os seguintes nós na visualização do editor e configure e conecte-os conforme descrito:
    Nó Input
    O nó de entrada recebe as respostas para várias mensagens de pedidos geradas a partir do fluxo de difusão.

    Esse deve ser um nó de entrada que suporta o modelo de pedido/resposta. Você pode utilizar os nós internos MQeInput e MQInput ou um nó de entrada definido pelo usuário que suporta pedido/resposta, ou uma mistura desses nós (dependendo dos requisitos dos aplicativos que enviam essas respostas). A resposta recebida por cada nó de entrada deve ser enviada pelo mesmo protocolo que o pedido ao qual ele corresponde (por exemplo, se você incluir um nó MQOutput no fluxo de difusão, a resposta para esse pedido deverá ser recebida por um nó MQInput nesse fluxo).

    1. Clique com o botão direito no nó de entrada e clique em Propriedades.
    2. Especifique a origem de mensagens de entrada para esse nó. Por exemplo, especifique o nome de uma fila do na propriedade Básica Nome da Fila a partir da qual o nó MQInput recupera mensagens.
    3. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
    4. Conecte o terminal de saída do nó de entrada ao terminal de entrada de um nó AggregateReply.

      Isso representa a configuração mais simples; se apropriado, você pode incluir outros nós entre o nó de entrada e o nó AggregateReply. Por exemplo, talvez você queira armazenar as respostas para fins de auditoria (em um nó Warehouse).

    Nó AggregateReply
    O nó AggregateReply recebe as respostas de entrada do nó de entrada através de seu terminal de entrada. Cada mensagem de resposta recebida pelo nó AggregateReply é armazenada de forma persistente no banco de dados do intermediário.

    Quando todas as respostas para um determinado grupo de pedidos de agregação tiverem sido coletadas, o nó AggregateReply criará uma mensagem de resposta agregada e a propagará através do terminal out.

    1. Clique com o botão direito no nó AggregateReply e clique em Propriedades.
    2. Defina a propriedade Nome Agregado de AggregateReply para identificar esta agregação. Defina este valor como o mesmo valor definido para a propriedade Nome Agregado no nó AggregateControl correspondente no fluxo de difusão.
    3. Opcional: defina um valor para Tempo Limite de Mensagem Desconhecida, se desejar reter uma mensagem não reconhecida antes de propagá-la para o terminal desconhecido. Se estiver utilizando fluxos de difusão e de recepção separados, talvez você queira definir esse valor como um número diferente de zero, caso haja atrasos na chegada da mensagem de controle.
    4. Opcional: conecte o terminal unknown a outro nó ou seqüência de nós se desejar tratar explicitamente mensagens não-reconhecidas. Se você não conectar esse terminal a outro nó no fluxo de mensagens, as mensagens propagadas através desse terminal serão descartadas.
    5. Opcional: se você tiver especificado um valor de tempo limite para essa agregação no nó AggregateControl, conecte o terminal timeout a outro nó ou seqüência de nós, se desejar tratar explicitamente tempos limite que expiram antes da recepção de todas as respostas. As respostas agregadas parcialmente completas são enviadas para o terminal timeout, se o cronômetro expirar. Se você não conectar esse terminal a outro nó no fluxo de mensagens, as mensagens propagadas através desse terminal serão descartadas.
    6. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
    7. Conecte o terminal de saída do nó AggregateReply ao terminal de entrada de um nó Compute.

    O nó AggregateReply também recebe em seu terminal de controle a mensagem de controle que foi enviada pelo nó AggregateControl correspondente no fluxo de difusão (direta ou indiretamente, conforme descrito em Associando Fluxos de Agregação de Difusão e Recepção). Não modifique o conteúdo dessa mensagem de controle.

    Nó Compute
    O nó Compute recebe a mensagem que contém as respostas combinadas. É improvável que essa mensagem combinada esteja em um formato que seja válido para saída e você deve configurar esse nó para criar uma mensagem de saída válida.
    1. Clique com o botão direito no nó Compute e clique em Propriedades.
    2. Especifique o nome do módulo ESQL que personaliza a função desse nó na propriedade Básica Módulo ESQL.
    3. Clique com o botão direito no nó e clique em Abrir ESQL para abrir o arquivo ESQL que contém o módulo para esse nó. O módulo é realçado na visualização do editor ESQL.
    4. Codifique o ESQL para criar uma única mensagem de saída a partir de respostas agregadas na mensagem de entrada.

      A estrutura da mensagem de resposta agregada que é propagada através do terminal de saída e as informações sobre como acessar seu conteúdo são fornecidas em Acessando o Conteúdo de Mensagens Combinadas.

    5. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
    6. Conecte o terminal de saída do nó Compute ao terminal de entrada do nó de saída que representa o destino da única mensagem de resposta.
    Nó Output
    Inclua um nó de saída para seu fluxo de recepção. Esse pode ser qualquer um dos nós internos ou um nó de saída definido pelo usuário.
    1. Clique com o botão direito no nó de saída e clique em Propriedades.
    2. Especifique o destino da mensagem de saída para esse nó. Por exemplo, especifique o nome de uma fila do na propriedade Básica Nome da Fila para a qual o nó MQOutput envia mensagens.
    3. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
  4. Pressione Ctrl-S para salvar o fluxo de mensagens e validar sua configuração.

Acessando o Conteúdo de Mensagens Combinadas

O nó AggregateReply cria uma pasta na árvore de mensagens combinadas abaixo da Raiz, chamada ComIbmAggregateReplyBody. Abaixo disso, ele cria várias pastas utilizando os nomes de pastas definidos nos nós AggregateRequest. As mensagens de resposta associadas são colocadas abaixo delas.

Por exemplo, as mensagens de pedidos podem ter nomes de pastas:

  • TAXI
  • HOTEL

A mensagem de resposta agregada resultante criada pelo nó AggregateReply poderá ter uma estrutura semelhante à mostrada abaixo:


Esse é um diagrama da árvore para o conteúdo da mensagem agregada criado sob o elemento ComIbmAggregateReplyBody sob Raiz.Seu conteúdo é descrito no texto ao redor.

Você pode utilizar um nó Compute para acessar a resposta da empresa de táxi utilizando o seguinte nome de correlação:

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

O nome da pasta não precisa ser exclusivo. Se você tiver vários pedidos com o nome de pasta TAXI, poderá acessar as respostas separadas utilizando a notação subscrita da matriz, por exemplo:

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz

Conceitos relacionados
Fluxos de Mensagem
Agregação de Fluxo de Mensagens
Nós Input definidos pelo usuário
Nós de Saída Definidos pelo Usuário

Tarefas relacionadas
Configurando Fluxos de Agregação
Criando o Fluxo de Difusã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 Exceções e Conflitos do Banco de Dados em Fluxos de Agregação
Projetando um Fluxo de Mensagens
Criação de um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Desenvolvendo Extensões Definidas pelo Usuário

Referências relacionadas
Nó AggregateControl
Nó AggregateReply
Nó AggregateRequest
Nó Compute
Nó MQeInput
Nó MQeOutput
Nó MQInput
Nó MQOutput