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:

Você pode incluir o fluxo fan-out e fan-in no mesmo fluxo de mensagens. Entretanto, você pode preferir 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 revisar um exemplo de um fluxo de fan-out fornecido com o WebSphere Message Broker, consulte a seguinte amostra: Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.

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ó de Entrada
    O nó de entrada recebe uma mensagem de entrada a partir da qual várias mensagens de pedido são geradas. Esse nó pode ser qualquer um dos nós incorporados ou um nó de entrada definido pelo usuário.
    1. Selecione o nó de entrada para abrir a visualização Propriedades, ou clique com o botão direito do mouse no nó e clique em Propriedades para abrir o diálogo Propriedades. As propriedades do nó são exibidas.
    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, da qual o nó MQInput recupera mensagens.
    3. Opcional: especifique os valores para qualquer outra propriedade que deseja configurar para este nó. Por exemplo, defina a propriedade Avançada Modo de Transação para o padrão Sim, para garantir que as mensagens de pedido agregadas sejam colocadas no ponto de sincronização. Essa opção evita a situação em que o nó AggregateReply recebe mensagens de resposta antes de receber a mensagem de controle que o informa sobre a instância de agregação. Colocar o fluxo de fan-out sob controle transacional assegura que o fluxo de fan-out seja concluído antes das mensagens de resposta chegarem ao AggregateReply.
    4. Conecte o terminal Out do nó de entrada ao terminal In de um nó AggregateControl. Esta opção representa a configuração mais simples; se apropriado, você pode incluir outros nós entre o nó de entrada 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 na mensagem (em um nó Compute).
    5. Opcional: se seus fluxos de fan-out e fan-in forem combinados em um fluxo de mensagens, modifique a propriedade Modo de ordem na guia Avançado. Selecione a opção Por Ordem de Fila e certifique-se de que a propriedade Ordem Lógica também esteja selecionada. Estas opções forçam o nó de entrada a ter um encadeamento único para manter a ordem lógica de mensagens que chegam na fila. Os encadeamentos de instâncias adicionais disponibilizados são compartilhados apenas entre os nós de entrada de fan-in para aprimorar o desempenho da agregação. Se os fluxos fan-in e fan-out estiverem em fluxos de mensagens separados, esta etapa não será necessária, porque você poderá disponibilizar encadeamentos adicionais especificamente para o fluxo de fan-in.
    AggregateControl
    O nó AggregateControl atualiza o LocalEnvironment associado à mensagem de entrada com informações requeridas pelo nó AggregateRequest. O nó AggregateControl cria a pasta LocalEnvironment.ComIbmAggregateControlNode. Essa pasta e seus campos são de uso interno do WebSphere Message Broker, e você não deve confiar em sua existência ou nos valores ao desenvolver fluxos de mensagens.
    1. Selecione o nó AggregateControl para abrir a visualização Propriedades , ou clique com o botão direito do mouse no nó e clique em Propriedades para abrir o diálogo Propriedades. As propriedades do nó são exibidas.
    2. Configure a propriedade Nome agregado do nó AggregateControl para identificar esta agregação específica. Ela é utilizada posteriormente para associar este 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 nó AggregateControl, os pedidos agregados armazenados internamente não serão removidos, a menos que todas as mensagens de resposta agregadas sejam retornadas. Esta situação pode conduzir a um acúmulo gradual de mensagens nas filas internas. Para evitar esta situação, configure o tempo limite como um valor diferente de zero (zero significa que um tempo limite nunca ocorre) para que, quando o tempo limite for atingido, os pedidos sejam removidos e as filas não sejam preenchidas com pedidos redundantes. Mesmo que os tempos limite não sejam necessários ou esperados, é uma boa prática configurar o valor de tempo limite como um valor alto (por exemplo: 86400 segundos, que são 24 horas) para que, ocasionalmente, as filas sejam limpas de agregações antigas.
    4. Conecte o terminal Out do nó AggregateControl ao terminal In de um ou mais nós Compute que fornecem a análise e interrupção do pedido na mensagem de entrada propagada neste terminal.
    Atenção: O terminal Control do nó AggregateControl ficou obsoleto na Versão 6.0 e, por padrão, as conexões deste terminal com o nó AggregateReply (diretas ou indiretas) serão ignoradas. Esta configuração aumenta a eficiência de fluxos de agregação e não danifica a confiabilidade de agregações. Esta é a configuração ideal.

    No entanto, se não desejar que uma mensagem de controle seja enviada do nó AggregateControl para o nó AggregateReply, será necessário conectar o terminal Control 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ê conectá-lo indiretamente ao nó AggregateReply, por exemplo, por meio de um nó MQOutput, deverá incluir um nó Compute para incluir os cabeçalhos apropriados na mensagem para assegurar que ele 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.

    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 subtarefa puderem extrair informações de que precisam da única mensagem de saída, 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 a mensagem de entrada inteira, 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 maneira, copiando o subconjunto apropriado da mensagem de entrada para cada mensagem de saída:

    1. Selecione o nó Compute para abrir a visualização Propriedades , ou clique com o botão direito do mouse no nó e clique em Propriedades para abrir o diálogo Propriedades. As propriedades do nó são exibidas.
    2. Selecione um valor para a propriedade Básica Modo de cálculo. 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 o nó AggregateRequest lê quando a mensagem o atinge. Certifique-se de que LocalEnvironment seja copiado da mensagem de entrada para a mensagem de saída no nó Compute. Esta configuração ocorre automaticamente, a menos que você especifique um valor que inclua LocalEnvironment (um entre Todos, LocalEnvironment, LocalEnvironment e Mensagem ou Exceção e LocalEnvironment).

      Se você especificar um destes valores, o intermediário assumirá que você está customizando o nó Compute com ESQL que grava em LocalEnvironment e que copiará sobre todos os elementos nessa árvore que são necessários 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 Out de cada nó Compute ao terminal In do nó de saída que representa o destino da mensagem de pedido de saída criada a partir da mensagem de entrada neste nó.
    Nó de Saída
    Inclua um nó de saída para cada mensagem de saída gerada no fluxo de difusão. Configure cada nó, conforme descrito posteriormente nesta seção, com as modificações apropriadas para cada destino.

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

    1. Selecione o nó de saída para abrir a visualização Propriedades , ou clique com o botão direito do mouse no nó e clique em Propriedades para abrir o diálogo Propriedades. As propriedades do nó são exibidas.
    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 Out do nó de saída ao terminal In de um nó AggregateRequest. Quando a mensagem for propagada por meio do terminal Out do nó de saída, o nó de saída integrado atualizará a pasta WrittenDestination no LocalEnvironment 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).

    AggregateRequest
    Inclua um nó AggregateRequest para cada mensagem de saída gerada em seu fluxo de fan-out.
    1. Selecione o nó AggregateRequest para abrir a visualização Propriedades , ou clique com o botão direito do mouse no nó e clique em Propriedades para abrir o diálogo Propriedades. As propriedades do nó são exibidas.
    2. Configure a propriedade Básica Nome da pasta como um valor que identifique o tipo de pedido que foi enviado. Este valor é utilizado pelo nó AggregateReply para corresponder à mensagem de resposta quando ela for recebida no fluxo de fan-in. O nome da pasta especificado para cada pedido gerado pelo fluxo de difusão deve ser exclusivo.

    O nó AggregateRequest grava um registro no WebSphere MQ para cada mensagem que ele processa. Este registro permite que o nó AggregateReply identifique a qual pedido cada resposta 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. Para obter detalhes sobre como é possível utilizar tempos limites para evitar essa situação, consulte Definindo Tempos Limites para Agregação.

    CUIDADO:
    Embora a utilização de tempos limite possa ajudar a evitar a situação descrita acima, configure seu fluxo de fan-out para ser transacional para que as mensagens de resposta não possam chegar ao fluxo de fan-in antes de os nós AggregateRequest correspondentes terem consolidado as atualizações do banco de dados.
  4. Pressione Ctrl-S ou clique em Arquivo > Salvar name no menu da barra de tarefas (em que name é o nome desse fluxo de mensagens) 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 do ambiente local
Agregação de Fluxo de Mensagens
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
Manipulando Exceções em Fluxos de Agregação
Desenvolvendo Extensões Definidas pelo Usuário
Referências relacionadas
Nó AggregateControl
Nó AggregateReply
Nó AggregateRequest
Nó Compute
Nó MQInput
Nó MQOutput
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:11:48

ac12290_