Criando o Fluxo de Difusão de Agregação

O fluxo de difusão de agregação recebe a mensagem de entrada inicial e a reestrutura para apresentar vários pedidos a vários aplicativos de destino.

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.

É possível incluir o fluxo fan-out e fan-in no mesmo fluxo de mensagens. No entanto, é aconselhável criar dois fluxos separados. 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-out, consulte a Amostra Airline Reservations fornecida com o WebSphere Message Broker.

Para criar o fluxo de difusão:

  1. Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
  2. Crie um novo fluxo de mensagens para fornecer o processamento de difusã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 uma mensagem de entrada a partir da qual várias mensagens de pedido são geradas. Ele pode ser qualquer um dos nós internos ou um nó input definido pelo usuário.
    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ó. Recomenda-se que você configure o modo Transação da propriedade Avançada para o padrão, Sim, para assegurar que as mensagens de pedido agregadas sejam colocadas sob o ponto de sincronização. Isso evitará uma situação em que o nó AggregateReply recebe mensagens de resposta antes de ter recebido a mensagem de controle informando-o da instância de agregação. Colocando o fluxo de fan-out sob controle transacional, você assegura que o fluxo de fan-out seja concluído antes que quaisquer mensagens de resposta cheguem a AggregateReply.
    4. Conecte o terminal de saída do nó input ao terminal de entrada de um nó AggregateControl.

      Isso representa a configuração mais simples; se apropriado, você pode incluir outros nós entre o nó input e o nó AggregateControl. Por exemplo, talvez você queira armazenar o pedido para fins de auditoria (em um nó Warehouse) ou incluir um identificador exclusivo à mensagem (em um nó Compute).

    5. Opcional: Se seus fluxos fan-out e fan-in forem combinados em um fluxo de mensagens, é aconselhável modificar a propriedade Modo de Ordem na guia Avançado. Selecione a opção Por Ordem de Fila e assegure que a opção Ordem Lógica também esteja selecionada. Isso força o nó input a ter um único encadeamento para manter a ordem lógica das mensagens que chegam na fila. Isso resulta no compartilhamento somente entre os nós de entrada de fan-in de quaisquer encadeamentos de instância adicionais disponibilizados para melhorar o desempenho da agregação. Se seus fluxos fan-in e fan-out estiverem em fluxos de mensagens separados, essa etapa não é necessária já que é possível disponibilizar encadeamentos adicionais especificamente para o fluxo de fan-in.
    Nó AggregateControl
    O nó AggregateControl atualiza o LocalEnvironment associado à mensagem de entrada com informações que são requeridas pelo nó AggregateRequest.
    1. Clique com o botão direito do mouse no nó AggregateControl e clique em Propriedades.
    2. Defina a propriedade Nome Agregado do nó AggregateControl para identificar esta agregação específica. Ela é utilizada posteriormente para associar esse determinado nó AggregateControl a um nó AggregateReply específico. O Nome Agregado especificado deve ser contextualmente exclusivo em um intermediário.
    3. Opcional: defina a propriedade Tempo Limite para especificar quanto tempo o intermediário aguarda a chegada de respostas antes de executar alguma ação (descrito em Definindo Tempos Limites para Agregação).

      Se um tempo limite não estiver configurado no AggregateControlNode, os pedidos agregados armazenados internamente não serão removidos a menos que todas as mensagens de resposta agregadas sejam retornadas. Isso pode conduzir a uma construção gradual das mensagens nas filas internas. Para evitar essa situação, configure o tempo limite para um valor diferente de zero (zero significa que nunca atinge o tempo limite), de modo que quando o tempo limite é alcançado, os pedidos são removidos e as filas não são preenchidas com os pedidos redundantes. Mesmo se os tempos limites não forem requeridos ou esperados, é uma boa prática configurar o valor de tempo limite para um grande valor (por exemplo: 864000 segundos que equivale a 24 horas) de modo que as filas ocasionalmente são limpas das antigas agregações.

    4. Conecte o terminal de saída do nó AggregateControl ao terminal de entrada de um ou mais nós Compute que fornecem a análise e interrupção do pedido na mensagem de entrada que é propagada nesse terminal.
    Nota: O terminal de controle do nó AggregateControl ficou obsoleto no Versão 6.0 e, por padrão, todas as conexões desse terminal com o nó AggregateReply (tanto diretas quanto indiretas) 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 não quiser controlar mensagens a serem enviadas do nó AggregateControl para o nó AggregateReply, você deve conectar o terminal de controle ao nó AggregateReply correspondente no fluxo de fan-in (direta ou indiretamente, conforme descrito em Associando Fluxos de Agregação de Difusão e Recepção). Se você o conectar indiretamente ao nó AggregateReply, por exemplo, através de um nó MQOutput, deverá incluir um nó Compute para incluir os cabeçalhos apropriados na mensagem para assegurar que possa ser transmitido com segurança.

    Além disso, para que o terminal Control e conexões dele 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 extrai informações da mensagem de entrada e constrói uma nova mensagem de saída.

    Se os aplicativos de destino que manipulam os pedidos de subtarefas puderem extrair as informações requeridas da única mensagem de entrada, não será necessário incluir um nó Compute para dividir a mensagem. Você pode transmitir toda a mensagem de entrada para todos os aplicativos de destino.

    Se seus aplicativos de destino esperam receber um pedido individual, não toda a mensagem de entrada, será necessário incluir um nó Compute para gerar cada mensagem de saída de subtarefa individual a partir da mensagem de entrada. Configure cada nó Compute da seguinte forma, copiando o subconjunto apropriado da mensagem de entrada para cada mensagem de saída.

    1. Clique com o botão direito do mouse no nó Compute e clique em Propriedades.
    2. Selecione um valor para a propriedade Básica Modo Calcular. Essa propriedade especifica quais seções da árvore de mensagens são modificadas pelo nó.

      O nó AggregateControl insere elementos na árvore LocalEnvironment na mensagem de entrada que são lidos pelo nó AggregateRequest quando a mensagem o atinge. Verifique se o LocalEnvironment é copiado da mensagem de entrada para a mensagem de saída no nó Compute. Isso ocorre automaticamente, a menos que você especifique um valor que inclua Ambiente Local (All, Ambiente Local, Ambiente Local e Message ou Exception e Ambiente Local).

      Se você especificar um desses valores, o intermediário assumirá que você está personalizando o nó Compute com o ESQL que grava no Ambiente Local e que você sobreporá os elementos nessa árvore que são requeridos na mensagem de saída.

      Se desejar modificar Ambiente Local, inclua a seguinte instrução para copiar as informações agregadas requeridas da mensagem de entrada para a mensagem de saída:

      SET OutputLocalEnvironment.ComIbmAggregateControlNode =
                      InputLocalEnvironment.ComIbmAggregateControlNode;
    3. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
    4. Conecte o terminal de saída de cada nó Compute ao terminal de entrada do nó output que representa o destino da mensagem de pedido de saída criada a partir da mensagem de entrada nesse nó.
    Nó Output
    Inclua um nó output para cada mensagem de saída gerada no fluxo de difusão. Configure cada nó conforme descrito abaixo, com as modificações apropriadas para cada destino.

    Deve ser um nó de saída que suporta o modelo pedido/resposta, como um nó MQOutput ou uma mistura desses nós (dependendo dos requisitos dos aplicativos de destino).

    1. Clique com o botão direito do mouse no nó output e clique em Propriedades.
    2. Especifique o destino das mensagens 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.O aplicativo de destino deve processar seu pedido e enviar a resposta ao destino de reposta indicado na sua mensagem de entrada (por exemplo o WebSphere MQ ReplyToQueue).
    3. Clique em Pedido na exibição à esquerda e defina valores para essas propriedades para especificar que as respostas são enviadas para a fila de entrada do fluxo de recepção.
    4. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó.
    5. Conecte o terminal de saída do nó output ao terminal de entrada de um nó AggregateRequest. Quando a mensagem for propagada através do terminal de saída do nó output, o nó output interno atualizará a pasta WrittenDestination no Ambiente Local associado com informações adicionais requeridas pelo nó AggregateRequest.

      As informações gravadas por nós internos são o nome da fila, o nome do gerenciador de filas, o ID da mensagem e o ID de correlação (do MQMD) e o identificador de resposta da mensagem (definido com o mesmo valor que o ID da mensagem).

    Nó AggregateRequest
    Inclua um nó AggregateRequest para cada mensagem de saída gerada no fluxo de difusão.
    1. Clique com o botão direito do mouse no nó output e clique em Propriedades.
    2. Defina a propriedade Básica Nome da Pasta como um valor que identifica o tipo de pedido enviado.Este valor é utilizado pelo nó AggregateReply para corresponder à mensagem de resposta quando ela for recebida no fluxo de recepção. O nome da pasta especificado para cada pedido gerado pelo fluxo de difusão deve ser exclusivo.

    O nó AggregateRequest grava um registro Início da mudança no WebSphere MQFim da mudança para cada mensagem que ele processa. Isso permite que o nó AggregateReply identifique a qual pedido cada resposta específica está associada. Se seus nós de saída não forem transacionais, a mensagem de resposta poderá chegar no fluxo de recepção antes da consolidação da atualização desse banco de dados. Consulte Definindo Tempos Limites para Agregação para obter detalhes de como os tempos limite podem ser utilizados para evitar essa situação.

    CUIDADO:
    Apesar da utilização dos tempos limites poder ajudar a evitar essa situação descrita acima, é preferível assegurar que não é possível que as mensagens de resposta obtenham o fluxo de fan-in antes dos nós AggregateRequest correspondentes terem confirmado suas atualizações de banco de dados, tornando seu fluxo de fan-out transacional.
  4. Pressione Ctrl-S para salvar o fluxo de mensagens e validar sua configuração.
Para coletar as respostas de agregação iniciadas por seu fluxo de fan-out, crie seu fluxo de fan-in, consulte Criando um Fluxo de Recepção de Agregação.
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Estrutura em Árvore LocalEnvironment
Agregação de Fluxo de Mensagens
Nós de Entrada Definidos pelo Usuário
Nós de Saída Definidos pelo Usuário
Tarefas relacionadas
Configurando Fluxos de Agregação
Criando um Fluxo de Recepção de Agregação
Utilizando Mensagens de Controle em Fluxos 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
Manipulação de Exceções 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
Gerando Várias Mensagens de Saída
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
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac12290_