Compartilhamento de Carga de Trabalho com Destinos de Fila
Se você incluir um cluster de servidores em um barramento de integração de serviços e implementar um ou mais mecanismos do sistema de mensagens ao cluster, será possível configurar o membro do barramento de cluster para escalabilidade. Os mecanismos do sistema de mensagem no membro do barramento de cluster compartilham a carga de trabalho do sistema de mensagem associada aos destinos de fila implementados no cluster.
Consulte Configurações de Alta Disponibilidade e Compartilhamento de Carga de Trabalho da Integração de Serviço para mais informações sobre a configuração de mecanismos do sistema de mensagens para compartilhar a carga de trabalho.
- Se houver apenas um mecanismo do sistema de mensagem no cluster, o destino será localizado por esse mecanismo do sistema de mensagem. O destino não é particionado.
- Se houver mais de um mecanismo do sistema de mensagem no cluster, o destino será particionado entre vários mecanismos do sistema de mensagem no cluster. Cada mecanismo do sistema de mensagens lida com um subconjunto das mensagens tratadas pelo destino.
Enviando Mensagens para um Destino de Fila Particionado
Geralmente, você cria membro de barramento de cluster escalável e particiona um destino de fila se um único servidor não puder suportar o carregamento do processamento de mensagens para a fila. Para ser usada efetivamente, uma fila particionada requer vários consumidores com pelo menos um consumidor consumindo a partir de cada partição. Um uso comum é cluster de MDBs (beans orientados a mensagens). Para obter detalhes sobre como um MDB consome a partir de um destino em cluster, consulte Como um Bean Acionado por Mensagem Conecta-se em um Cluster.
- O comportamento padrão do sistema de mensagem se o aplicativo de produção estiver conectado a um mecanismo do sistema de mensagem de um membro de barramento de cluster que hospeda o destino da fila
Por padrão, o aplicativo de produção prefere enviar todas suas mensagens para o ponto da fila local. Esse comportamento maximiza o desempenho da entrega de mensagens, minimizando a distância que a mensagem precisa percorrer até o ponto de fila.
Figura 1. Comportamento padrão: mensagens são enviadas para o ponto de fila localSe o ponto da fila local não estiver disponível, as mensagens serão processadas como se não existisse nenhum ponto da fila local. Um ponto de fila não estará disponível para novas mensagens se:- O mecanismo do sistema de mensagens proprietário do ponto da fila não estiver disponível (por exemplo, o mecanismo do sistema de mensagens é interrompido).
- O ponto da fila alcançar seu limite mais alto de mensagens.
- O ponto da fila tiver tido a capacidade de enviar mensagens para ele estando desativado.
- O comportamento padrão do sistema de mensagem se o aplicativo de produção estiver conectado a um mecanismo do sistema de mensagem de um membro de barramento que não hospeda o destino da fila
Por padrão, a carga de trabalho do sistema de mensagem equilibra as mensagens nos pontos de fila disponíveis.
Nesta figura, um aplicativo de produção está conectado a um mecanismo do sistema de mensagens de um membro de barramento que não hospeda o destino da fila, com a carga de trabalho de suas mensagens balanceada nos pontos de fila disponíveis.
Figura 2. Comportamento padrão: mensagens têm a carga de trabalho balanceadas em todos os pontos de fila
- O comportamento configurável quando o aplicativo de produção é conectado a um mecanismo do sistema de mensagem de um membro do barramento que hospeda o destino da fila
Se você quiser que todas as mensagens do aplicativo de produção tenham a carga de trabalho balanceada em todos os pontos de fila de um destino da fila, mesmo quando conectadas a um mecanismo do sistema de mensagem com um ponto de fila, considere desativar a opção de configuração padrão Ponto de fila local preferido no produtor da mensagem. Essa opção está disponível para produtores de mensagens JMS e entradas de mensagens de conexões de barramento externo que usam o WebSphere Application Server Versão 7.0 ou posterior.
Nesta figura, um aplicativo de produção é conectado a um mecanismo do sistema de mensagens de um membro de barramento que hospeda o destino da fila. O aplicativo de produção tem a opção "preferir ponto de fila local" desativado. Suas mensagens têm a carga de trabalho balanceada em todos os pontos de fila.
Figura 3. Desativar ponto de fila local preferido: mensagens têm a carga de trabalho balanceada em todos os pontos de filaEntretanto, se várias conexões de aplicativos de produção também forem balanceadas pela carga de trabalho por todos os mecanismos do sistema de mensagens no membro do barramento, considere reter o comportamento padrão Preferir ponto da fila local, por motivos de desempenho. Isso ocorre devido ao comportamento padrão:- A carga de trabalho equilibra mensagens de todos os aplicativos de produção em todos os pontos de fila
- Minimiza a necessidade de enviar mensagens do mecanismo do sistema de mensagem conectado para outro mecanismo do sistema de mensagem no mesmo membro do barramento de cluster
- Comportamento configurável quando o aplicativo de produção está conectado a um mecanismo do sistema de mensagem de um membro de barramento de cluster que não hospeda o destino da fila
Se você quiser enviar todas as mensagens produzidas durante uma única sessão de um produtor de aplicativo para o mesmo ponto de fila, você poderá configurar a Afinidade da mensagem. As mensagens não têm então a carga de trabalho balanceada em vários pontos de fila.
Considere configurar a Afinidade da mensagem para um aplicativo se quiser enviar conjuntos de mensagens para o mesmo ponto de fila para o processamento na ordem, por uma única instância de um consumidor. O sistema seleciona um único ponto de fila ao qual todas as mensagens são enviadas com base na opção de configuração Ponto de fila local preferido para esse produtor de aplicativo. Essa opção está disponível para produtores de mensagens JMS e entradas de mensagens de conexões de barramento externo que usam o WebSphere Application Server Versão 7.0 ou posterior.
Nesta figura, um aplicativo de produção é conectado a um mecanismo do sistema de mensagens de um membro de barramento que não hospeda o destino da fila. O aplicativo de produção tem a afinidade de mensagem configurada. Todas as mensagens são enviadas para um ponto de fila.
Figura 4. Afinidade da mensagem: todas as mensagens produzidas são enviada para o mesmo ponto de filaSe o ponto de fila selecionado se tornar indisponível, qualquer mensagem adicional enviada desse aplicativo será enfileirada em trânsito para o ponto de fila selecionado ou a operação de envio será rejeitada. Esse comportamento corresponde ao envio de mensagens para um destino de fila com um único ponto de fila.
Mensagens de Consumo de um Destino de Fila Particionado
Quando é criada uma sessão do consumidor, ele é ligado a uma partição do destino. Se o consumidor estiver conectado a um mecanismo do sistema de mensagem que tem uma partição local de destino, o consumidor será ligado àquela partição. Se o consumidor estiver conectado a um mecanismo do sistema de mensagem que não tem uma partição de destino, o consumidor será ligado a uma partição em outro mecanismo do sistema de mensagem selecionado dinamicamente pelo gerenciador de carga de trabalho. Depois de ligado, um consumidor recebe mensagens somente da partição ligada. Por padrão, se a partição à qual um consumidor está ligado não tiver nenhuma mensagem, o consumidor não receberá mensagens de partições alternativas, mesmo se tais partições contiverem mensagens.
Se você configurar um destino particionado em um cluster que não tenha consumidores locais, é importante ter pelo menos um consumidor para cada partição do destino, para assegurar que todas as mensagens sejam consumidas. É possível fazer isso destinando consumidores individuais para se conectarem a mecanismos do sistema de mensagem específicos que tenham um ponto de fila. MDBs são tipos específicos de consumidores de mensagem. Para obter detalhes do comportamento ao consumir a partir de um destino particionado, consulte Como um Bean Acionado por Mensagem Conecta-se em um Cluster.
Se desejar que um consumidor receba mensagens de todos os pontos disponíveis da fila de um destino, você poderá configurar o consumidor de mensagens.
Se houver um alto número de mensagens pequenas e se os MDBs executarem somente uma pequena parte do processamento, você poderá usar os mecanismos do sistema de mensagens balanceados pela carga de trabalho com filas particionadas, conforme descrito neste tópico. Se, entretanto, os MDBs executarem uma quantidade maior de processamento de um número mais baixo de mensagens, você poderá precisar de somente um mecanismo do sistema de mensagens, mas será necessário implementar os MDBs em tantos servidores quanto possível, quer esses servidores tenham ou não mecanismos do sistema de mensagens e até mesmo se esses servidores não forem membros da mesma célula. Uma situação típica é quando os MDBs atualizam um banco de dados do usuário. Para obter detalhes sobre a configuração da implementação do MDB por múltiplos servidores, consulte Configurando o Controle de MDB para o Fornecedor de Sistema de Mensagens Padrão.
- O comportamento padrão do sistema de mensagem quando um consumidor consome a partir de um destino particionado
Quando uma sessão do aplicativo de consumo é criada, a sessão é associada a um ou mais pontos da fila do destino da fila. Se o destino da fila tiver vários pontos de fila, o sistema escolherá um. Por padrão, o sistema de mensagens prefere se associar ao consumidor com o ponto da fila no mecanismo do sistema de mensagens conectado. Se não houver um ponto de fila local disponível no mecanismo do sistema de mensagens conectado, o sistema escolherá outra fila usando o WebSphere Application Server Workload Manager, que usa um algoritmo round robin ponderado.
O comportamento padrão tenta maximizar o desempenho do consumo da mensagem a partir dos pontos da fila, limitando as mensagens disponíveis ao consumidor àqueles no ponto da fila associado do consumidor. O consumidor não pode consumir mensagens de outros pontos da fila, mesmo se o ponto da fila associado não tiver nenhuma mensagem, mas outros pontos da fila tiverem.
Nesta figura, um aplicativo de consumo é conectado a um mecanismo do sistema de mensagens sem ponto de fila local. Somente mensagens de um ponto de fila associado são consumidas.
Figura 5. Comportamento padrão: somente mensagens do ponto de fila associado são consumidas
- Comportamento configurável do sistema de mensagem quando um consumidor console a partir de um destino particionado
É possível configurar um consumidor de mensagem para que seu ponto de fila associado colete mensagens de todos os pontos de fila disponíveis de um destino e as torne visíveis ao consumidor.
Considere configurar Coleta de mensagem se quiser que um consumidor trate uma fila particionada como uma fila que não é particionada. No entanto, coletar mensagens de vários pontos de fila é significativamente mais lento que consumi-las de um único ponto de fila. Portanto, se possível, reconfigure o destino para ter um único ponto de fila ou use um destino de alias para restringir produtores e consumidores de mensagens para um único ponto de fila. Se você exigir escalabilidade de vários pontos de fila e o desempenho for importante, considere soluções alternativas para coletar mensagens.
No modo de operação Coleta de mensagem, o consumidor pode não ver as mensagens na ordem na qual elas foram mantidas nos pontos de fila. Então, a ordem da mensagem não é mantida.
Essa opção está disponível para produtores de mensagens JMS e entradas de mensagens de conexões de barramento externo usando WebSphere Application Server Versão 7.0 ou posterior.
Nesta figura, um aplicativo de consumo é conectado a um mecanismo do sistema de mensagens sem ponto de fila local. O aplicativo de consumo tem a coleta de mensagem ativada. O ponto de fila associado coleta mensagens de todos os pontos de fila disponíveis de um destino e as torna disponíveis para o consumidor.
Figura 6. Coleta de mensagem: mensagens são consumidas de todos os pontos de fila