Agregação é a geração e difusão de pedidos relacionados derivados de uma única mensagem de entrada e a recepção de respostas correspondentes para produzir uma mensagem de resposta única e agregada.
O pedido inicial recebido pelo fluxo de mensagens, representando uma coleção de itens de pedido relacionados, é dividido no número apropriado de pedidos individuais para atender às subtarefas do pedido inicial. Esse processo é conhecido como difusão e é fornecido por um fluxo de mensagens que inclui nós de agregação.
As respostas de subtarefas são combinadas e intercaladas em uma única resposta que é retornada ao solicitante original (ou outro aplicativo de destino) para indicar a conclusão do processamento. Esse processo é conhecido como recepção e também é fornecido por um fluxo de mensagens que inclui nós de agregação.
Você pode iniciar a agregação enviando uma mensagem para um fluxo de mensagens de um aplicativo cliente que está conectado ao intermediário através de qualquer protocolo suportado e a resposta agregada também pode ser enviada para um aplicativo cliente através de todos esses protocolos. As mensagens emitidas pelo fluxo de mensagens de difusão e as respostas recebidas pelo fluxo de mensagens de recepção devem ser mensagens de pedido/resposta. Você fica, portanto, limitado aos aplicativos cliente que conectam utilizando o WebSphere MQ Enterprise Transport (enviando e recebendo mensagens para e a partir dos nós MQInput e MQOutput) ou aos clientes que utilizam outro protocolo suportado por nós de entrada e saída definidos pelo usuário que estão de acordo com o modelo de comunicação de pedido/resposta.
O WebSphere Message Broker fornece três nós do fluxo de mensagens que suportam agregação:
Quando você inclui esses nós em seus fluxos de mensagens, os diversos pedidos de difusão são emitidos em paralelo a partir de um fluxo de mensagens. Isso está em contraste com a operação padrão do fluxo de mensagens no qual cada nó executa seu processamento em seqüência.
Você também pode utilizar esses nós para emitir pedidos para aplicativos fora do ambiente do intermediário; as mensagens podem ser enviadas de forma assíncrona para aplicativos externos ou serviços, respostas recuperadas desses aplicativos e respostas combinadas para fornecer uma única resposta para a mensagem de pedido original.
Esses nós também permitem um aperfeiçoamento no tempo de resposta, porque pedidos lentos podem ser executados em paralelo e não precisam seguir uns aos outros seqüencialmente. Se as subtarefas puderem ser processadas de forma independente, e não precisarem ser tratadas como parte de uma única unidade de trabalho, elas poderão ser processadas por fluxos de mensagens separados.
Você pode projetar e configurar um fluxo de mensagens que fornece uma função semelhante sem utilizar os nós agregados, emitindo os pedidos de subtarefas para outro aplicativo (por exemplo, utilizando o nó HTTPRequest) e registrando os resultados de cada um no Ambiente Local. Após a conclusão de cada subtarefa, você pode intercalar os resultados de LocalEnvironment em um nó Compute e criar a mensagem de resposta combinada para propagar o aplicativo de destino. Se você fizer isso, todas as subtarefas serão executadas seqüencialmente e não fornecerão os benefícios de desempenho de operação paralela que podem ser obtidos utilizando os nós agregados.
Exemplos de fluxos de agregação utilizando os nós agregados são fornecidos na Amostra Aggregation e na Amostra Airline Reservations. A amostra Aggregation demonstra uma agregação simples de quatro vias e a amostra Airline Reservations simula pedidos relacionados a um serviço de reserva de vôo e ilustra as técnicas associadas aos fluxos de agregação.
Em releases anteriores do WebSphere Message Broker,
a agregação utilizava uma tabela no banco de dados do intermediário para persistir pedidos
de agregação. Do WebSphere
Business Integration Message Broker Versão 5.0 em diante, você pode utilizar o
WebSphere MQ. O funcionamento externo
dos nós de agregação está inalterado, mas você pode configurar um grupo de execução para utilizar filas do WebSphere MQ para armazenar agregações em vez de uma tabela de banco de dados. A utilização do WebSphere MQ dessa forma aprimora o desempenho e significa que a agregação pode ser executada em um modo não-persistente quando a persistência dos pedidos de agregação não for requerida. Para obter detalhes sobre como migrar e configurar um grupo de execução para utilizar o WebSphere MQ, consulte Utilizando WebSphere MQ para Armazenar Estado em Nós de Agregação.
Quando você deixa de utilizar uma tabela de banco de dados para utilizar o WebSphere MQ para armazenar o estado da agregação, não
acontece uma migração de agregações existentes, por isso é importante garantir que não
existam agregações pendentes, pois essas agregações não serão migradas.
Os novos nós de agregação utilizam uma expiração de mensagem do WebSphere MQ para gerenciar os tempos limites de mensagens. Para que a expiração de mensagens funcione, as filas de mensagens devem ser procuradas. Os nós de agregação procuram as filas automaticamente para garantir que as mensagens expiradas sejam processadas. No z/OS,
é possível configurar o WebSphere MQ para executar um processo de varredura que faça essa procura em vez de os nós de agregação. Para ativar a varredura, configure a propriedade EXPRYINT do gerenciador de filas do intermediário para 5 segundos.
Se EXPRYINT não for configurada ou for configurada para um valor maior que 10 segundos, as agregações serão invertidas e passam a procurar automaticamente as filas de agregação.