O WebSphere Message Broker suporta WS-RM (Web Services Reliable Messaging), que permite que dois sistemas troquem mensagens de forma confiável entre si.
O Web Services Reliable Messaging (WS-RM) é um padrão OASIS que permite que dois sistemas enviem, de forma confiável, mensagens SOAP entre si. O propósito do WS-RM é garantir a entrega de mensagens em situações, como o terminal de destino estar indisponível temporariamente (por exemplo, no caso de um reinício do servidor) ou o caminho da mensagem atravessar diversas conexões de transporte, sendo que alguma delas pode falhar (por exemplo, através de um firewall). O WS-RM oferece maior confiabilidade ao usar o transporte HTTP, mas sobre impacto no desempenho.
O WS-RM é aplicável apenas ao transporte HTTP. Se você configurar o WS-RM em um fluxo de mensagens que use transporte JMS, as configurações do WS-RM não serão usadas quando o fluxo for implementado.
Sistemas que implementam mensagens de retransmissão do WS-RM que não foram entregues e confirmadas com êxito e evitam a entrega de mensagens duplicadas ao destino do aplicativo. O WS-RM é um protocolo de serviços da Web e pode ser usado com WS-Security e WS-Addressing.
O sistema de mensagens confiável ocorre entre dois terminais conhecidos como origem do sistema de mensagens confiável e destino do sistema de mensagens confiável. Antes de as mensagens serem enviadas, a origem e o destino confiáveis, executam uma troca de mensagens para estabelecer uma Sequência. Uma Sequência é identificada por um identificador exclusivo e consiste em uma sequência de mensagens que são numeradas a partir de um. Enviar um grupo de mensagens em uma sequência garante a confiabilidade de todas as mensagens nessa sequência.
A origem do sistema de mensagens confiável envia cada mensagem uma ou mais vezes para o destino do sistema de mensagens confiável. O destino envia novamente o reconhecimento de cada mensagem recebida para mostrar que a mensagem foi recebida com êxito. Se a origem do sistema de mensagens confiável não receber um reconhecimento de que a mensagem foi recebida pelo destino, ela enviará a mensagem novamente até que um reconhecimento seja recebido.
Quando todas as mensagens em uma sequência tiverem sido recebidas com êxito pelo destino e o reconhecimento tiver sido recebido pela origem, a origem enviará uma mensagem TerminateSequence para instruir o destino de que a sequência de mensagens está completa.
Se o cliente estiver esperando mensagens que não foram entregues, ele pode iniciar uma solicitação WS-MakeConnection. WS-MakeConnection é uma especificação que descreve como mensagens podem ser trocadas entre um servidor e um cliente usando um canal de retorno específico de transporte. A solicitação MakeConnection do cliente permite que o servidor responda com qualquer mensagem enfileirada que não tenha sido recebida pelo cliente.
O WebSphere Message Broker não suporta o uso de compactação HTTP ou SSL com WS-RM.
O WS-RM especifica diversas garantias de entrega que serão suportadas pelo provedor. A garantia InOrder assegura que mensagens sejam entregues para o destino do aplicativo pelo Destino de RM na ordem na qual elas foram enviadas, de acordo com seus números de sequência. Por exemplo, se o Destino de RM receber mensagens na ordem m1, m3, m2, ele primeiro entregará m1, depois reterá m3 até receber m2 e depois entregará m2 e m3 para o destino do aplicativo. As mensagens não são persistidas no caso de reinício de um broker.
O diagrama a seguir mostra um cenário de exemplo em que InOrder não é usado e as mensagens não precisam ser entregues na ordem em que foram enviadas. A segunda mensagem na sequência é perdida, mas a terceira é processada, embora a segunda não tenha sido entregue.
No cenário a seguir, a opção é selecionada e as mensagens devem ser entregues na ordem em que são enviadas. A segunda mensagem na sequência é perdida, portanto, a terceira mensagem não é processada até que msg2 possa ser entregue.
A garantia de InOrder afeta somente o processamento de mensagens de entrada, por exemplo, quando o conjunto de políticas que pede pela entrega InOrder é associado a um nó SOAPInput de um fluxo de mensagens de entrada. Quando a entrega InOrder é ativada para processamento de mensagens SOAP de entrada, as mensagens são processadas pelo fluxo de acordo com seus números de mensagem conforme designados pela Origem RM.
A garantia InOrder não se aplica ao processamento de mensagens de saída. Se a entrega InOrder for selecionada para processamento de mensagens SOAP de saída, por exemplo, com um nó SOAPRequest, as mensagens não serão necessariamente entregues ao destino do aplicativo na mesma ordem em que são enviadas do fluxo de mensagens.
Para obter informações sobre escalabilidade ao usar InOrder com WS-RM, consulte Ajustando o Processamento SOAP para Escalabilidade e Desempenho.