Associando Fluxos de Agregação de Difusão e Recepção

Associe o fluxo de mensagens de difusão a seu fluxo de mensagens de recepção correspondente definindo a propriedade Nome Agregado dos nós AggregateControl e AggregateReply no fluxo de agregação como o mesmo valor.

Antes de começar:

Para concluir esta tarefa, você deve ter concluído as tarefas a seguir:

O Nome Agregado deve ser contextualmente exclusivo em um intermediário. Em geral, isto significa que haverá apenas um nó AggregateControl e um nó AggregateReply com um determinado Nome Agregado, embora seja possível ter mais de um nó AggregateControl com o mesmo Nome Agregado, conforme descrito em Utilizando Vários Nós AggregateControl.

Você pode criar os fluxos de difusão e de recepção no mesmo fluxo de mensagens ou em dois diferentes fluxos de mensagens. Em qualquer caso, as duas partes da agregação são vinculadas quando você conecta o nó AggregateControl do fluxo de difusão ao nó AggregateReply do fluxo de recepção.

A forma pela qual você configura seu fluxo de agregação depende de inúmeros fatores:

Um único fluxo é mais fácil de implementar para um caso simples, mas existem algumas limitações para essa abordagem e, na maioria dos casos, você perceberá que é preferível a flexibilidade oferecida por dois fluxos de mensagens. A amostra do mostra o uso de dois fluxos para agregação.

Para associar o fluxo de difusão com o fluxo de recepção:

  1. Alterne para o .
  2. Se você criou os fluxos de difusão e de recepção em um único fluxo de mensagens:
    1. Abra o fluxo de mensagens de agregação.
    2. Conecte o terminal de controle do nó AggregateControl ao terminal de controle do nó AggregateReply para fazer a associação.

    Isso é referido como uma conexão direta entre os dois nós de agregação.

  3. Se você criou fluxos de mensagens separados de difusão e recepção:
    1. Abra o fluxo de mensagens de difusão.
    2. Configure o nó AggregateControl conforme descrito em Criando o Fluxo de Difusão de Agregação.
    3. Configure um nó de saída que representa o destino intermediário para a mensagem de controle. Por exemplo, se você desejar enviar a mensagem de controle para uma fila intermediária do , inclua um nó MQOutput e identifique a fila de destino nas propriedades Básicas de Nome do Gerenciador de Filas e Nome da Fila.
    4. Opcional: configure um nó Compute que cria uma mensagem de saída válida contendo a mensagem de controle. Por exemplo, se desejar transmitir a mensagem de controle para um nó MQOutput, configure o nó Compute para incluir um MQMD à mensagem e preencha os campos obrigatórios nesse cabeçalho.

      Por exemplo, você pode codificar o seguinte ESQL:

      SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID;
      SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION;
      SET OutputRoot.MQMD.Format = MQMD_STRING;
    5. Conecte o terminal de controle do nó AggregateControl ao terminal de entrada do nó de saída que representa o destino intermediário para a mensagem de controle. Se você tiver incluído um nó Compute, conecte o terminal de controle do nó AggregateControl ao terminal de entrada do nó Compute e o terminal de saída do nó Compute ao terminal de entrada do nó de saída que representa o destino intermediário para a mensagem de controle.
    6. Abra o fluxo de mensagens de recepção.
    7. Configure pelo menos um nó de entrada para receber mensagens de resposta, conforme descrito em Criando um Fluxo de Recepção de Agregação.
    8. Configure um nó de entrada para receber as informações de controle do nó AggregateControl. Por exemplo, defina a propriedade Básica Nome da Fila do nó MQInput para receber a mensagem de controle de uma fila intermediária do .
    9. Conecte o terminal de saída do nó de entrada que recebe a mensagem de controle ao terminal de controle do nó AggregateReply.

    Isso é referido como uma conexão indireta entre os dois nós de agregação.

As vantagens de um único fluxo de mensagens que contém difusão e recepção são:

As vantagens de criar fluxos separados de difusão e de recepção são:

Mantendo Fluxos de Mensagens

Você pode achar necessário, durante o tempo de vida de um fluxo de mensagens, suspender sua operação, alterar seu design e reimplementá-lo. Se um fluxo de mensagens envolver agregação, talvez seja útil suspender operações em dois estágios:

  1. Suspenda o estágio de difusão para parar outros pedidos que estão sendo enviados e aguarde que todos os pedidos pendentes sejam atendidos pelo estágio de recepção.
  2. Quando não houver agregações pendentes, suspenda o estágio de recepção.

Utilize este encerramento de duas etapas para assegurar-se de que os tempos limite se comportarão de forma previsível. Se as etapas de difusão e captação estiverem no mesmo fluxo, pode ser difícil encerrar dessa forma. Se o for o transporte subjacente, isso pode ser obtido, até certo ponto, inibindo as operações get e put nas filas envolvidas. Outros transportes podem ter uma capacidade semelhante.

Conceitos relacionados
Fluxos de Mensagem
Agregação de Fluxo de Mensagens

Tarefas relacionadas
Configurando Fluxos de Agregação
Criando o Fluxo de Difusão de Agregação
Criando um Fluxo de Recepção de Agregaçã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

Referências relacionadas
Nó AggregateControl
Nó AggregateReply
Nó AggregateRequest