Restringindo Mensagens de Resposta para o Ponto de Fila Local para o Aplicativo de Pedido
Quando uma fila JMS identifica uma fila do barramento de integração de serviços como a fila de resposta, e essa fila do barramento de integração de serviços possui múltiplos pontos de fila, você poderá configurar uma fila JMS para restringir as mensagens ao ponto de fila que é local para o aplicativo que referenciou a fila JMS. Isso é feito para garantir que uma mensagem de resposta seja enviada para o ponto de fila apropriado de um membro de barramento do cluster.
Uma fila do barramento de integração de serviços terá múltiplos pontos de fila se pertencer a um membro de barramento do cluster com múltiplos mecanismos do sistema de mensagens (geralmente, para fornecer compartilhamento ou escalabilidade de carga de trabalho). O ponto de fila local é o ponto de fila no mecanismo do sistema de mensagem ao qual o aplicativo está conectado.
Exemplo: Uma fila JMS chamada Resposta é configurada para identificar a fila de barramento de integração de serviços que deve ser usada como a fila de resposta. A fila JMS é configurada para restringir as mensagens ao ponto de fila local (consulte as tarefas relacionadas para obter mais detalhes).

O membro do barramento possui a fila do barramento de integração de serviços usada como a fila de resposta, de modo que cada mecanismo do sistema de mensagem possua um ponto de fila da fila de resposta configurada.
O aplicativo solicitante cria uma mensagem JMS e configura o destino JMSReplyTo para a fila JMS chamada Resposta. O aplicativo solicitante envia a mensagem de pedido para a fila do serviço usando outra fila JMS, chamada Serviço. (Serviço não requer configuração especial.) Por padrão, essa mensagem pode ser entregue a qualquer um dos pontos de fila pertencentes a Serviço, embora o usual é que ela siga para o ponto de fila local. No entanto, para ilustrar totalmente este exemplo, o sistema envia a mensagem para o outro ponto de fila.
Quando o aplicativo que envia a mensagem de pedido é conectado a um mecanismo do sistema de mensagem que também tem um ponto de fila para a fila de resposta do barramento de integração de serviços subjacente configurada para ele, e a opção é ativada, a identidade desse único ponto de fila da fila de resposta é incluída nas informações da fila JMSReplyTo na mensagem.

A mensagem de pedido é entregue à fila do serviço, Serviço, e é processada pelo serviço. Na conclusão, o serviço envia uma mensagem JMS para a fila de resposta identificada na mensagem de pedido (obtida usando o método JMS Message.getJMSReplyTo). Nesse ponto, o sistema de mensagens enviaria, por padrão, a mensagem de resposta para qualquer um dos pontos de fila de Resposta mas, como o solicitante definiu o escopo da fila de resposta como seu ponto de fila local, a resposta é enviada para o único ponto de fila do mecanismo do sistema de mensagens ao qual o solicitante estava conectado.

O sistema se comporta como se a fila do barramento de integração de serviços tivesse apenas um ponto de fila. Se o ponto de fila para o qual o escopo da resposta foi definido não estiver disponível, a mensagem não será enviada para nenhum outro ponto de fila.
- As mensagens de resposta são sempre enviadas novamente para o ponto de fila que é local ao aplicativo de pedido. Isso reduz o roteamento da mensagem.
- Aplicativos de pedido conectado a mecanismos do sistema de mensagem diferentes no membro do barramento podem usar a mesma definição de fila JMS. Isso permite o balanceamento de carga de trabalho dinâmica pelo cluster.
- Se o aplicativo solicitante pretender desconectar-se e reconectar-se antes de receber a mensagem de resposta, ele deverá saber a qual mecanismo de sistema de mensagens está se conectando, e deverá conectar-se ao mesmo quando se reconectar. Isso é obtido no connection factory JMS destinando o mecanismo do sistema de mensagem e usando o connection factory JMS para se conectar novamente. Essa configuração exclui o balanceamento de carga de trabalho.
- O aplicativo de pedido deve estar conectado a um mecanismo do sistema de mensagem no membro do barramento que possui a fila de resposta do barramento de integração de serviços. Caso contrário, não haverá nenhum ponto de fila local para o escopo das mensagens de respostas e o sistema seguirá o comportamento de roteamento padrão de mensagens.
Refinamento
- Múltiplas factories de conexão, cada uma destinada a um mecanismo de sistema de mensagens diferente.
- Os aplicativos solicitantes a serem distribuídos pelas factories de conexão.