WS-Reliable Messaging

Os fluxos de mensagens são importados sem que o WS-Reliable Messaging esteja ativado. Qualquer um pode chamar o serviço da web para consumir as mensagens, semelhante ao Monitor TCP/IP com SOAP através de HTTP. Para ativar o WS-Reliable Messaging, consulte Estendendo a Amostra Address Book.

A ativação do WS-RM é uma tarefa administrativa executada no nível do WebSphere Message Broker. Não é possível configurar o WS-RM ao desenvolver fluxos de mensagens; você deve configurar a política no broker e associá-la aos fluxos de mensagens em um arquivo BAR.

Por que Usar o WS-Reliable Messaging

Na amostra de extensão Address Book, o consumidor e o provedor possuem os mesmos requisitos de sistema de mensagens confiável:

  1. Assegure-se da entrega de uma mensagem SOAP quando um servidor for reiniciado inesperadamente.
  2. Assegure-se da entrega de uma mensagem SOAP quando a conexão entre o cliente e o servidor falhar, por exemplo, devido a um tempo limite. O cliente deve estar apto a detectar a condição e tentar novamente a transmissão da mensagem.

O protocolo WS-RM preenche esses requisitos definindo como enviar novamente mensagens que ele determina como não tendo sido entregues com sucesso e evitando a entrega de mensagens duplicadas para o aplicativo de destino.

Como o WS-Reliable Messaging Funciona

A chave para o WS-RM é o conceito de uma sequência. Uma sequência no WS-RM é um contrato entre um cliente de serviços da web e um provedor de serviços da web, por meio do qual eles concordam em transmitir com confiança as mensagens entre eles. A sequência é usada para manter o estado de mensagens que foram enviadas e recebidas. A própria sequência é específica do terminal de um provedor. Quando um cliente envia uma mensagem para um terminal do provedor de serviços da web pela primeira vez, é criada uma sequência para o terminal desse provedor e todas as mensagens subsequentes desse cliente para o terminal desse provedor são entregues nessa sequência. A sequência permite que o WS-RM do lado do cliente e do lado do provedor decida se as mensagens de aplicativos precisam ser entregues novamente, e para detectar se as mensagens que chegam são duplicatas.

Para definir as sequências e manter o estado atual, o WS-RM do cliente e do provedor usa uma coleção de mensagens de protocolo definidas que são enviadas e retornadas. O diagrama a seguir mostra um fluxo de mensagens típico para uma chamada de serviço de solicitação/resposta da web usando o WS-RM.

Uma sequência típica de troca de mensagens do WS-RM, descrita nas etapas a seguir.

O cenário de amostra

A seguir estão as etapas que descrevem como a amostra funciona quando o WS-RM é ativado:

  1. As condições prévias do protocolo são estabelecidas. Elas incluem troca de políticas, resolução de terminal e estabelecimento de confiança.
  2. O consumidor solicita a criação de uma nova sequência.
  3. O provedor cria uma nova sequência e retorna seu identificador exclusivo.
  4. O consumidor começa a transmitir mensagens na sequência, começando com MessageNumber 1. Cada solicitação enviada pelo nó SOAPRequest criará uma nova sequência, portanto, todas as mensagens terão MessageNumber 1.
  5. O consumidor também inclui um cabeçalho AckRequested para assegurar que receberá uma SequenceAcknowledgement adequada para a sequência.
  6. O provedor reconhece o recebimento de mensagens número 1 como resultado do recebimento do cabeçalho AckRequested do consumidor. Se alguma mensagem intermediária for perdida por algum motivo, nenhum reconhecimento será enviado ao consumidor
  7. O consumidor retransmite a mensagem não reconhecida com o mesmo MessageNumber. Essa é uma nova mensagem da perspectiva do transporte subjacente, mas possui o mesmo Identificador de sequência e MessageNumber para que o provedor possa reconhecê-la como uma duplicata da mensagem anterior no caso de as mensagens originais e retransmitidas serem ambas recebidas. O consumidor inclui um cabeçalho AckRequested na mensagem retransmitida para que o provedor envie um reconhecimento rapidamente.
  8. O provedor recebe a segunda transmissão da mensagem com MessageNumber 1 e reconhece o recebimento de mensagens número 1.
  9. O consumidor recebe esse reconhecimento e envia uma mensagem TerminateSequence para o provedor, indicando que a sequência está concluída. A mensagem TerminateSequence indica que a mensagem número 1 era a última mensagem da sequência.
  10. O provedor recebe a mensagem TerminateSequence, indicando que o consumidor não enviará mais mensagens. O provedor envia uma mensagem TerminateSequenceResponse para o consumidor e recupera os recursos associados à sequência.

Os detalhes para saber se as mensagens devem ser entregues em ordem ou não, estão contidos no conjunto de políticas do WS-RM. Use o diagrama anterior para referência.

Voltar para Estendendo a Amostra Address Book

Voltar para Início da Amostra