A comunicação entre aplicativos corporativos pode ser categorizada como síncrona e assíncrona.
A comunicação síncrona significa que o cliente e o servidor devem estar disponíveis ao mesmo tempo para estabelecer uma conexão e trocar mensagens.
No entanto, tal configuração não é adequada para desenvolver aplicativos corporativos fracamente acoplados, nos quais a confiabilidade é mais importante do que o desempenho, ou seja, a transmissão de dados assíncrona é preferível nesse caso.
No texto iremos entender o princípio de funcionamento do modelo de interação assíncrona ou JMS, e os cinco fluxos diferentes que podem ajudar a publicar e receber mensagens usando o Mule 4.
Modos de entrega de mensagens em JMS
Em uma arquitetura corporativa, um único aplicativo pode trocar dados com apenas um aplicativo ou um grupo de aplicativos em um determinado instante. No primeiro caso, temos o modo de entrega de mensagem ponto a ponto, enquanto no segundo funcionará no modo de publicação.
Conexão ponto a ponto (Fila)
A troca de mensagens ponto a ponto ocorre entre um único emissor (produtor) e um único receptor (consumidor) por meio de uma fila. Depois que o remetente publica uma mensagem, ela é retida na fila até que o destinatário a consuma.
Veja o exemplo a seguir
Publicar e assinar (Tópico)
Aqui podemos ter vários destinatários que recebem a mesma mensagem simultaneamente, desde que tenham se inscrito no corretor de mensagens por meio de tópicos. Quando uma mensagem é enviada, o tópico é publicado para todos os assinantes e a retém até que seja consumida. Um assinante pode ser durável ou não durável.
As mensagens são armazenadas persistentemente para um assinante durável e podem ser recuperadas se o intermediário de mensagem falhar. No entanto, para um assinante não durável, as mensagens não são armazenadas e nenhuma delas é entregue se a conexão do consumidor for perdida.
Uma visão geral do módulo JMS no Mule 4
É importante conhecer um processo geral de estabelecimento da comunicação antes de entender os fluxos Mule que podemos construir no Anypoint Studio para publicar e consumir mensagens JMS.
Para esta demonstração, recomendamos o agente de mensagens ActiveMQ.
Depois que a conexão for estabelecida usando ActiveMQConnectionFactory, criamos uma sessão. Esta nos permite criar uma mensagem, um remetente e um consumidor de mensagem. Depois disso, podemos executar os fluxos para seguir os modos de entrega ponto a ponto ou publicar-consumir.
No Anypoint Studio, o módulo JMS possui os seguintes componentes: reconhecer, consumir, publicar, publicar-consumir em uma nova mensagem e recuperar sessão.
Publique e consuma mensagens usando a fila JMS
1º Fluxo
O fluxo de publicação de uma mensagem começa com um componente listener que publica uma mensagem na fila.
O componente de publicação pertencente ao módulo JMS o segue. A função de biblioteca, necessária na configuração do componente de publicação, é o cliente ActiveMQ.
Depois que o componente é configurado para o host local, uma conexão é estabelecida. Finalmente, o componente set payload permite definir o conteúdo da mensagem, que é publicado na fila.
2º Fluxo
A 2ª Etapa deste processo é o fluxo para consumir mensagens da fila. O componente listener desta fase obtém a mensagem do 1º fluxo.
O segundo componente consome a mensagem, e qualquer mensagem consumida é configurada como carga útil no terceiro componente do fluxo. Na sequência, , a mensagem consumida é publicada em outra fila de projeto que neste caso é MULE.JMS.TEST.OUT.
Nota: para esta demonstração, temos duas filas diferentes no ActiveMQ, MULE.JMS.TEST.IN e MULE.JMS.TEST.OUT respectivamente. As mensagens consumidas na fila MULE.JMS.TEST.IN são publicadas em MULE.JMS.TEST.OUT.
Publicar e consumir mensagens usando JMS (Tópico)
É interessante notar que os fluxos de um tópico são muito semelhantes aos fluxos da fila. Entretanto, a diferença está na configuração. Ao configurar um tópico para consumir mensagens, podemos adicionar vários assinantes.
Conforme mencionado anteriormente, um assinante pode ser durável ou não. Outro recurso que precisamos discutir é o “sem local”. Ao marcar esta caixa, podemos garantir que não receberemos uma cópia da mensagem publicada se formos o remetente.
Semelhante ao fluxo de mensagens de consumo para a fila, temos MULE.JMS.TEST.TOPIC e MULE.JMS.TEST.OUT. As mensagens consumidas de MULE.JMS.TEST.TOPIC são publicadas em MULE.JMS.TEST.OUT.
Publique e consuma mensagens JMS (Fila)
A operação publicar-consumir cria um padrão de comunicação para solicitação e resposta entre os aplicativos do sistema. O fluxo permanece incompleto até que o aplicativo de destino retorne uma resposta à solicitação feita.
1º Fluxo
2º Fluxo
Quando a mensagem é encaminhada para o componente de publicação e consumo no 1º fluxo, ela é passada para o componente na nova mensagem no 2º fluxo. A carga útil é recuperada e, em seguida, retornada ao 1º fluxo. A partir daí, é finalmente publicada no MULE.JMS.TEST.OUT, que marca o final do processo.
Conclusão
A comunicação assíncrona é essencial para desenvolver aplicativos corporativos fracamente acoplados que trocam dados e executam várias operações.
O Mule 4 permite publicar e consumir mensagens JMS conforme demonstrado neste artigo por meio de cinco cenários diferentes - publicar mensagens em uma fila, consumir mensagens em uma fila, publicar mensagens no tópico, consumir mensagens no tópico e publicar-consumir mensagens na fila.
Ao incorporar esses fluxos, vários aplicativos em uma empresa podem ser integrados para alinhar os processos que ocorrem em uma empresa.
Confira esta postagem do blog da Mulesoft para saber mais sobre os padrões de mensagens assíncronas. (texto em inglês)
*Este conteúdo foi traduzido e adaptado, e você pode conferir o post original aqui.
Este artigo foi escrito por Rupali Shah e publicado originalmente em Prensa.li.