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:

Você também é aconselhado a ler a visão geral sobre Agregação de Fluxo de Mensagens antes de concluir esta tarefa.

Dependendo de se o fluxo de fan-out é transacional e, se não for, dos valores de tempo limite especificados, a mensagem de resposta combinada pode ser gerada antes de todas as respostas terem sido recebidas pelo fluxo de fan-in.Consulte Criando o Fluxo de Difusão de Agregação para obter informações adicionais sobre este tópico.

É possível incluir o fluxo fan-out e fan-in no mesmo fluxo de mensagens. No entanto, é aconselhável criar dois fluxos separados. Não implemente várias cópias do mesmo fluxo fan-in nos mesmos grupos de execução ou em grupos diferentes. Para obter informações adicionais sobre os benefícios de como configurar fluxos de mensagens separados, consulte Associando Fluxos de Agregação de Difusão e Recepção.

Para ver um exemplo de fluxo de fan-in, consulte a Amostra Airline Reservations fornecida com o WebSphere Message Broker.

Para criar o fluxo de recepção:

  1. Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
  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ó input recebe as respostas para várias mensagens de pedidos geradas a partir do fluxo de difusão.

    Deve ser um nó de entrada que suporte o modelo pedido/resposta, como um nó MQInput ou uma mistura desses nós (dependendo dos requisitos dos aplicativos que enviam essas respostas). A resposta recebida por cada nó input 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 do mouse 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 WebSphere MQ 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ó input 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ó input e o nó AggregateReply. Por exemplo, talvez você queira armazenar as respostas para fins de auditoria (em um nó Warehouse).

    Nota: É aconselhável ter um nó input que receba todas as mensagens de resposta de agregação no início do fluxo fan-in, conforme descrito acima. Utilizar um, em vez de vários nós, assegura que nenhum encadeamento de nó input de resposta conclui a agregação e a execução do fluxo de mensagens, enquanto que os outros enviam suas mensagens de resposta à Resposta Agregada, que subseqüentemente tornam-se elegíveis para tempo limite. A utilização de um único nó input cria um processamento mais seqüencial das respostas para cada agregação que pode ser escalada com êxito, utilizando instâncias adicionais para fornecer mais poder de processamento.
    Nó AggregateReply
    O nó AggregateReply recebe as respostas de entrada do nó input 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 do mouse 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.
    Nota: O terminal Control do nó AggregateReply está obsoleto na Versão 6.0 e, por padrão, quaisquer conexões a esse terminal (direta ou indireta) serão ignoradas. Isso é para maximizar a eficiência dos fluxos de agregação e não danifica a confiabilidade das agregações. Essa é a configuração otimizada.

    No entanto, se você quiser que o nó AggregateReply receba a mensagem de controle em seu terminal de controle enviada pelo nó AggregateControl correspondente no fluxo de fan-out, você deve fazer as conexões necessárias conforme descrito em Criando o Fluxo de Difusão de Agregação. Recomenda-se que o caminho do nó AggregateReply para o nó output seja o mais direto possível. Manter o fluxo de fan-in curto beneficiará o desempenho das agregações. Não modifique o conteúdo dessa mensagem de controle.

    Além disso, para que o terminal Control e conexões a ele sejam reconhecidas, você deve ativar a variável de ambiente MQSI_AGGR_COMPAT_MODE. No entanto, escolher essa opção tem implicações em relação ao desempenho e ao comportamento das agregações de mensagens. Para obter uma descrição completa dessas implicações e da variável de ambiente, consulte Utilizando Mensagens de Controle em Fluxos de Agregação.

    Nó Compute
    O nó Compute recebe a mensagem que contém as respostas combinadas. É improvável que essa mensagem combinada esteja em um formato válido para saída, pois a mensagem de resposta agregada possui uma estrutura fora do comum e não pode ser transformada no fluxo de bits requerido por alguns nós, por exemplo, o nó MQOutput. Os terminais out e timeout sempre têm como saída uma mensagem de resposta agregada, portanto, sempre requerem processamento adicional antes de um nó MQOutput. Portanto, você deve incluir um nó Compute e configurar esse nó para criar uma mensagem de saída válida.
    1. Clique com o botão direito do mouse 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 do mouse 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ó output que representa o destino da única mensagem de resposta.
    Nó Output
    Inclua um nó output para seu fluxo de recepção. Esse pode ser qualquer um dos nós internos ou um nó output definido pelo usuário.
    1. Clique com o botão direito do mouse no nó output 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 WebSphere MQ 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 está descrito no texto circundante.

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
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac12300_