Se tratando de serviço de mensageria, é sempre importante ressaltar que faz-se necessário uma segurança/confiança de quem faz o uso do serviço. Sendo assim, o IBM Websphere MQ não se comporta diferente.

As mensagens de COA e COD, correspondem as confirmações utilizadas pelo serviço de mensageria.

COA – Confirm on Arrival

COD – Confirm on Delivery

A importância dessas informações, vai depender do tipo de sistema que esta utilizando a mensageria. Existem sistemas que utilizam essas mensagens para uma possível auditoria futura.

Vamos deixar de teorias e vamos ao entendimento de como funciona!

Consideremos que existem dois Gerenciadores de filas configurados para se comunicar através de canais Sender e Receiver, filas remotas e fila de transmissão. (Um autêntico ambiente dos amantes de MQ )

Neste ambiente, possuímos dois Gerenciadores de Filas (QM1 e QM2), filas locais (QL.QM1 e QL.QM2), filas remotas (QR.QM1 e QR.QM2) e canais de transmissão simples.

Logo, para entendermos o momento em que as confirmações são enviada, vamos seguir o fluxo:

OBS: Neste exemplo, não consideraremos o papel da fila de transmissão para não confundir.

1 – A Aplicação coloca a mensagem de dados (MQPUT) na fila remota QR.QM2.

Neste momento, a mensagem de dados é transmitida ao QM2 e a mensagem de confirmação COA enviada para a fila QL.QM1.

2 – A mensagem COA é enviada para a fila QL.QM1, utilizando a variável “ReplyToQueueName” definida no cabeçalho da mensagem de dados.

3 – A Aplicação destinatária irá consumir a mensagem de dados e neste momento é enviado o COD.

4 – A mensagem COD é enviada para a fila QL.QM1 utilizando a mesma variável “ReplyToQueueName” definida no cabeçalho da mensagem de dados e utilizada pela COA.

Neste ponto, a observação que deve se fazer é que, o QM2 não conhece “diretamente” a fila QL.QM1 mas ele sabe que uma fila remota chamada QR.QM1, tem como destino a fila QL.QM1, então a mensagem de COD é postada na fila remota.

Nem sempre o entendimento desse fluxo fica claro, ainda mais para pessoas que não tem uma grande familiaridade com o MQ. Para tentar ajudar, utilizaremos uma analogia.

O aplicativo de mensagens de texto chamado WhatsApp fez recentemente uma atualização onde mensagens de confirmação são utilizadas. Então como funciona essas confirmações no WhatsApp?

image    Para mensagens entregues ou fazendo uma analogia “postadas na fila”.

Para mensagens entregue ao telefone do seu contato ou fazendo a analogia “COA – Confirm on Arrival”.

  Para mensagens lida pelo contato ou fazendo a analogia, mensagens consumidas pela aplicação destinatária.

Acredito que desta forma, a explicação tenha esclarecido um pouco mais. Caso tenha ficado alguma dúvida, não esqueça de comentar o post para que possamos tentar, juntos, respondê-la.

Até o próximo…..


Artigo Original