Otimizando o Rendimento do Processamento do Fluxo de Mensagens

Cada fluxo de mensagens projetado deve fornecer um conjunto completo de processamento para mensagens recebidas de uma determinada origem. No entanto, isto pode resultar em fluxos de mensagens muito complexos que incluem grandes números de nós e podem causar uma sobrecarga no desempenho e possíveis gargalos. Aumentar o número de fluxos de mensagens que processam suas mensagens fornece a opção de processamento paralelo e, portanto, rendimento do processamento aprimorado.

Leve em consideração também a maneira que as ações tomadas pelo fluxo de mensagens são consolidadas e a ordem em que as mensagens são processadas.

Considere as seguintes opções para otimizar o rendimento do processamento do fluxo de mensagens:

Várias Mensagens de Processamento Encadeadas em um Único Fluxo de Mensagens
Quando você implementa um fluxo de mensagens, o intermediário automaticamente inicia uma instância do fluxo de mensagens para cada nó input que o contém. Este não é o comportamento padrão. No entanto, se você possuir um fluxo de mensagens que identifique um número muito grande de mensagens, a origem da entrada (por exemplo, uma fila WebSphere MQ) poderá se tornar um gargalo.

Você pode atualizar a propriedade Instâncias Adicionais do fluxo de mensagens implementado no arquivo bar: o intermediário inicia cópias adicionais do fluxo de mensagens em encadeamentos separados, portanto, fornecendo processamento paralelo. Esta é a forma mais eficiente de tratar esta situação, se você não estiver preocupado com a ordem na qual as mensagens são processadas.

Se o fluxo de mensagens receber mensagens de uma fila do WebSphere MQ, você poderá influenciar de alguma forma a ordem de processamento das mensagens definindo a propriedade Modo de Ordem do nó MQInput:

  • Se você definir Modo de Ordem como Por ID do Usuário, o nó garantirá que as mensagens de um usuário específico (identificado pelo campo UserIdentifier no MQMD) serão processadas na ordem garantida. Uma segunda mensagem de um usuário não será processada por uma instância do fluxo de mensagens se uma mensagem anterior desse usuário estiver atualmente sendo processada por outra instância do fluxo de mensagens.
  • Se você definir Ordenar Modo como Por Ordem de Fila, o nó processará uma mensagem de cada vez para preservar a ordem na qual as mensagens são lidas a partir da fila. Portanto, esse nó se comporta como se a propriedade Instâncias Adicionais do fluxo de mensagens estivesse definida para zero.

Para aplicativos de publicação/assinatura que se comunicam com o intermediário por qualquer protocolo suportado, as mensagens de qualquer tópico fornecido são publicadas por intermediários na mesma ordem que são recebidas dos editores (sujeitas à reorganização com base na prioridade da mensagem, se aplicável). Isto normalmente significa que cada assinante recebe mensagens de um intermediário específico, em um tópico específico, de um publicador específico, na ordem que eles são publicados por este publicador.

No entanto, é possível que, ocasionalmente, as mensagens sejam entregues fora de ordem. Isso pode ocorrer, por exemplo, se um link na rede falhar e mensagens subseqüentes forem roteadas por outro link.

Se você tiver que assegurar a ordem em que as mensagens são recebidas, você pode utilizar tanto o parâmetro SeqNum (número de seqüência) ou o PubTime (marca de hora de publicação) no comando Publish para cada mensagem publicada, para calcular a ordem de publicação.

Para obter informações adicionais sobre as técnicas recomendadas para todos os usuários de MQI e AMI, consulte o WebSphere MQ Application Programming Guide para programas gravados no MQI e o WebSphere MQ Application Messaging Interface (disponível como SupportPac MA0F no Página da Web do WebSphere MQ SupportPacs) para programas gravados no AMI.

Os aplicativos do WebSphere MQ Everyplace e SCADA utilizam um método diferente de ordenação de mensagens conforme descrito em WebSphere MQ Mobile Transport e WebSphere MQ Telemetry Transport, respectivamente. O intermediário não fornece um pedido de mensagem para as mensagens recebidas no WebSphere MQ Web Services Transport, noWebSphere MQ Real-time Transport ou no WebSphere MQ Multicast Transport.

Várias Cópias do Fluxo de Mensagens em um Intermediário
Você também pode implementar várias cópias do mesmo fluxo de mensagens em diferentes grupos de execução no mesmo intermediário. Isso tem efeitos semelhantes ao aumento do número de encadeamentos de processamento em um único fluxo de mensagens, embora geralmente forneça ganhos menos consideráveis.

Esta opção também remove a capacidade de determinar a ordem na qual as mensagens serão processadas. Isso porque, se houver mais de uma cópia do fluxo de mensagens ativa no intermediário, cada cópia poderá estar processando uma mensagem ao mesmo tempo, a partir da mesma fila. O tempo decorrido para processar uma mensagem pode variar e muitos fluxos de mensagens acessando a mesma fila poderia, portanto, ler mensagens da origem de entrada de maneira aleatória. A ordem das mensagens produzidas pelos fluxos de mensagens pode não corresponder à ordem das mensagens originais.

Verifique se os aplicativos que recebem mensagens desses fluxos de mensagens podem suportar mensagens fora de ordem.

Cópias do Fluxo de Mensagens em Vários Intermediários
Você pode implementar várias cópias do mesmo fluxo de mensagens em diferentes intermediários. Essa solução requer alterações em sua configuração, porque é necessário assegurar que os aplicativos que fornecem mensagens para o fluxo de mensagens possam colocar suas mensagens na fila ou na porta de entrada correta. Geralmente, essas alterações podem ser feitas na implementação do fluxo de mensagens, definindo-se as propriedades configuráveis do fluxo de mensagens.
O Escopo do Fluxo de Mensagens
Você pode observar que, em algumas circunstâncias, poderá dividir um único fluxo de mensagens em vários fluxos diferentes para reduzir o escopo de trabalho que cada fluxo de mensagens executa. Se fizer isso, deverá estar ciente de que não é possível executar fluxos de mensagens separados na mesma unidade de trabalho e se houver aspectos de transação em seu fluxo de mensagens (por exemplo, a atualização de vários bancos de dados), esta opção não fornecerá uma solução adequada.

Os dois exemplos a seguir mostram quando é conveniente dividir um fluxo de mensagens:

  1. Em um fluxo de mensagens que utiliza RouteToLabel, a fila de entrada se torna um gargalo. Você pode utilizar outra cópia do fluxo de mensagens em um segundo grupo de execução, mas isso não é apropriado se você desejar que todas as mensagens sejam tratadas na ordem em que aparecem na fila. Você pode considerar a divisão de cada desvio do fluxo de mensagens que começa com um nó Label, fornecendo uma fila de entrada e um nó input para cada desvio. Isto pode ser apropriado porque, quando a mensagem é roteada pelo nó RouteToLabel para o nó Label relevante, ela possui algum nível de independência de todas as demais mensagens.

    Talvez também seja necessário fornecer outra fila de entrada e outro nó input para concluir qualquer processamento comum ao qual os desvios de Rótulo se conectam após a conclusão do processamento exclusivo.

  2. Se você tiver um fluxo de mensagens que processa mensagens muito grandes que levam uma quantidade de tempo considerável para processamento, você poderá:
    1. Criar outras cópias do fluxo de mensagens que utilizam uma fila de entrada diferente (você pode definir isso no próprio fluxo de mensagens ou pode atualizar esta propriedade quando implementar o fluxo de mensagens).
    2. Configurar aliases de filas do WebSphere MQ para redirecionar mensagens de alguns aplicativos para a fila e fluxo de mensagens alternativos.

    Também é possível criar um novo fluxo de mensagens que replique a função do fluxo de mensagens original (mas que processe apenas mensagens grandes que são transmitidas imediatamente para ele por esse fluxo) que você modificou para verificar o tamanho da mensagem de entrada e redirecionar as mensagens grandes.

Freqüência de Consolidações
Se um fluxo de mensagens receber mensagens de entrada em uma fila do WebSphere MQ, você pode melhorar seu rendimento do processamento para alguns cenários do fluxo de mensagens, modificando suas propriedades padrão depois de tê-lo incluído em um arquivo bar. (Essas opções não estarão disponíveis se as mensagens de entrada forem recebidas por outros nós de entrada; em cada mensagem são realizadas consolidações nos fluxos de mensagens).

As propriedades a seguir controlam a freqüência com a qual o fluxo de mensagens consolida transações:

  • Contagem de Consolidação.Representa o número de mensagens processadas a partir da fila de entrada antes de emitido um MQCMIT.
  • Intervalo da Consolidação. Isso representa o intervalo de tempo que decorre antes que um MQCMIT seja chamado.
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Visão Geral da Implementação
Tarefas relacionadas
Otimizando Tempos de Resposta do Fluxo de Mensagens
Criação de um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Editando Propriedades Configuráveis
Referências relacionadas
Nós Internos
Propriedades Configuráveis do Fluxo de Mensagens
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac00350_