Informações sobre os pontos-chave dos fluxos de mensagens e conjuntos de mensagens que são usados na amostra Web Service Aggregation.
Um fluxo de mensagens fan-out de agregação possui um ou mais nós de saída, cada um sendo envio de dados de um nó AggregateRequest. Quando o fan-out de todas as mensagens tiver sido feito por meio de um nó de saída e um nó AggregateRequest, o fluxo de mensagens confirmará a unidade de trabalho. Se o nó de saída for transacional, as mensagens de saída serão enviadas nesse ponto de confirmação. Se os nós não forem transacionais, (por exemplo, se usarem HTTP), as mensagens serão enviadas quando o nó for encerrado. Esse comportamento pode afetar a agregação, porque, se os serviços da Web de destino forem executados rapidamente, a resposta poderá chegar antes que a confirmação de agregação seja concluída. A resposta é então tratada como uma mensagem desconhecida na resposta agregada e é processada após um tempo limite especificado. Para evitar esse problema, use um nó de saída transacional para fan-out nos fluxos de mensagens de agregação. Os nós MQOutput suportam a transacionalidade.
Na amostra Web Service Aggregation, um aspecto vital do processamento é o armazenamento com segurança do identificador de resposta da solicitação SOAP geral. Para cada fluxo de mensagens, uma explicação é fornecida sobre como esse comportamento é obtido.
A amostra Web Service Aggregation contém seis fluxos de mensagens. Cinco fluxos são usados para agregação de serviços da Web. Esses fluxos são executados em uma sequência indicada na seguinte tabela (clique em cada uma para obter mais detalhes). O sexto fluxo de mensagens processa os dados de monitoramento de fluxos.
Sequência | Nome do fluxo de mensagens | Descrição |
---|---|---|
1 | WSAggregationFanOut.msgflow | Chama (fan-out) um número de solicitações SOAP de serviços da Web por meio do WebSphere MQ |
2 | WSAggregationMQtoSOAP.msgflow | Converte as mensagens SOAP do WebSphere MQ em HTTP |
3 | WSAggregationTargetWS.msgflow | Executa os serviços da Web e produz respostas |
4 | WSAggregationSOAPtoMQ.msgflow | Converte as respostas HTTP em WebSphere MQ |
5 | WSAggregationFanIn.msgflow | Recebe (fan-in) as respostas dos serviços da Web e produz uma resposta SOAP consolidada |
WSAggregationReadMonitordata.msgflow | Processa as mensagens que são produzidas pelo monitoramento de Fluxo de Mensagens. |
O fluxo de mensagens WSAggregationFanOut.msgflow tem envio de dados de nós MQOutput dos nós AggregateRequest. Ao usar os nós do WebSphere MQ, o fan-out é transacional. Para especificar a transacionalidade nos nós MQOutput, configure o Modo de Transação como Sim.
O fluxo possui dois nós AggregateRequest com envio de dados MQOutput associados. É possível incluir mais pares de nós, se necessário.
Quando o fluxo WSAggregationFanOut.msgflow é executado, uma ou mais mensagens podem ser colocadas em cada fila. O número de mensagens colocadas em uma fila é determinado pelo valor de um campo na mensagem de entrada.
O fluxo armazena o identificador de resposta SOAP original no campo MQMD.CorrelId de cada mensagem de saída.
Cada mensagem do WebSphere MQ possui um campo MQMD.MsgId exclusivo, que é um requisito para a agregação.
O fluxo de mensagens WSAggregationMQtoSOAP.msgflow tem duas partes semelhantes. Os dois nós MQInput servem as duas filas do WebSphere MQ gravadas pelo WSAggregationFanOut.msgflow.
O serviço da Web que é chamado por cada parte é idêntico. É possível alterar esse comportamento para que possa chamar serviços da Web separados, se necessário. Para obter instruções sobre como alterar o comportamento, consulte Estendendo a Amostra.
O fluxo de mensagens WSAggregationMQtoSOAP.msgflow armazena o identificador de resposta SOAP original no campo UserContext do ambiente local SOAP.
Para o serviço da Web que está prestes a ser executado, o fluxo cria um novo identificador de resposta SOAP a partir do MQMD.MsgId.
O fluxo de mensagens WSAggregationTargetWS.msgflow cria uma mensagem de resposta do serviço da Web. O fluxo pode ser clonado para representar serviços da Web diferentes, por exemplo, se cada parte do WSAggregationMQtoSOAP.msgflow chamar serviços da Web diferentes.
O serviço da Web mantém um contagem do número de vezes que ele foi chamado. Esse valor de número é retornado no campo <orderAmt> da mensagens de resposta. Se <partNo> for igual a ABC1234, o campo <orderStatus> será configurado para confirmado, caso contrário, ele será configurado para rejeitado.
O fluxo de mensagens WSAggregationSOAPtoMQ.msgflow armazena o identificador de resposta SOAP original (a partir do SOAP UserContext no ambiente local) no campo MQMD.MsgId da mensagem de saída.
O fluxo armazena o identificador de resposta SOAP do serviço da Web que foi chamado anteriormente em Properties.ReplyIdentifier. Quando a mensagem do WebSphere MQ é produzida, ela contém esse valor no MQMD.CorrelId.
O fluxo configura MQMD.MsgType para MQMT_REPLY.
O fluxo de mensagens WSAggregationFanIn.msgflow restaura o identificador de resposta SOAP original a partir da mensagem de resposta agregada.
O campo <AMT> da mensagem de resposta agregada contém o valor do campo <orderAmt> do serviço da Web que foi chamado por último.
O fluxo de mensagens WSAggregationReadMonitordata.msgflow usa como sua entrada as mensagens de publicação/assinatura que são emitidas pelo monitoramento de fluxos relevante a esses dados.
No fluxo de mensagens WSAggregationReadMonitordata.msgflow, o nó Collector cria coleções separadas para cada parte de dados de negócios. Como não se sabe antecipadamente quantas mensagens do evento de monitor serão produzidas para cada parte dos dados de negócios, o nó Collector atinge o tempo limite em seu terminal de Entrada após 10 segundos. São especificados no máximo 100 eventos (nominais). Se mais de 100 eventos forem coletados, os dados estarão em mais de uma coleta. Quando a coleção estiver concluída, ou um tempo limite de 10 segundos decorrer, um resumo dos eventos de monitor será gravado no arquivo Businessdata.xml.
O nó FileOutput especifica que, no evento de um nome de arquivo duplicado, um registro de data e hora será incluído no arquivo de saída, o arquivo será arquivado e o arquivo existente substituído. Esse comportamento garante que nenhum dado de monitoramento seja perdido se mais de uma coleta com os mesmos dados de negócios forem reunidas.
O conjunto de mensagens WSAggregationMessages contém definições que são derivadas de dois conjuntos de definições WSDL:
O conjunto de mensagens também contém definições de mensagens que são usadas pelo monitoramento de fluxo. Esses são gerados a partir de um esquema XML que é fornecido pelo WebSphere Message Broker.