TJF + Mensageria: Simplificando o envio de mensagens

Luca Elert
TOTVS Developers
Published in
3 min readApr 28, 2020

Este artigo dá início ao detalhamento das bibliotecas do TOTVS Java Framework, apresentadas no artigo Desenvolvendo aplicações cloud-native com Java — parte 3. Nele, abordaremos a utilização da biblioteca tjf-messaging-stream.

Photo by Mathyas Kurmann on Unsplash

TJF Messaging Stream

Esta biblioteca provê suporte de mensageria no modelo de Publish/Subscribe, utilizando como base o Spring Cloud Stream, além de possuir suporte nativo ao tratamento global de exceções e recursos de multi-tenancy.

Mecanismos Homologados

Ao utilizar o Spring Cloud Stream, temos suporte a vários mecanismos de mensageria (message brokers), entretanto o TJF homologa a utilização dos mecanismos RabbitMQ, Apache Kafka e ActiveMQ.

Exemplo de Mensageria

Neste exemplo vamos utilizar o broker RabbitMQ, porém o TJF possui um repositório de exemplos no GitHub, onde podemos verificar como implementar mensageria com Kafka e o ActiveMQ.

Nosso repositório TJF-Samples tem como princípio ser colaborativo, dessa forma sinta-se a vontade para submeter um pull request ou sugestões, assim juntos poderemos desenvolver exemplos ricos e explicativos para todos.

Antes de iniciarmos o exemplo, será necessário subir um container RabbitMQ. Para isso, basta utilizar o comando abaixo:

docker run -d -p 5672:5672 -p 15672:15672 --name container_rabbitmq rabbitmq:3.8.3-management

Caso não possua o docker instalado, acesse a documentação de instalação do mesmo.

Para a construção do exemplo será necessário possuir um projeto Java que utilize o framework TJF como parent. Para isso, siga os passos da documentação Começando com o TJF em nosso portal.

O framework TJF é um projeto inner-source, e está disponível, por enquanto, para colaboradores e parceiros da TOTVS.

Com o projeto em mãos podemos iniciar a utilização de mensageria. Dessa forma, basta declarar a dependência da biblioteca tjf-messaging-stream.

<dependency>
<groupId>com.totvs.tjf</groupId>
<artifactId>tjf-messaging-stream</artifactId>
</dependency>

Após declarar a dependência vamos configurar as filas de mensageria para o projeto.

Observe que apenas com estas configurações o projeto possui as filas de mensageria e filas para o tratamento de exceções. Assim, ocorrendo uma exceção no envio da mensagem, a mesma será enviada para as filas de exceções. Executando a requisição http://servidor:porta/actuator/messaging as mensagens que geraram exceções serão reprocessadas.

Tendo as configurações finalizadas, precisamos criar a estrutura de envio de mensagens do projeto. Primeiro, iremos criar o exchange.

Com o exchange criado, podemos criar o publisher de mensagens. Neste, utilizaremos o conceito de TOTVSMessage.

Apenas com estas duas classes já é possível publicar mensagens utilizando o TJF. A publicação da mensagem será realizada a partir de uma chamada GET. Ao executar o método GET, é possível ver a criação dos exchanges e das filas de mensageria no RabbitMQ.

Agora vamos capturar as mensagens enviadas. Para isso, criaremos o subscriber da aplicação.

Por utilizarmos o conceito de TOTVSMessage, teremos acesso de forma simplificada aos atributos do evento e ao header da mensagem enviada.

Finalizando

Neste artigo apresentamos um projeto com a biblioteca tjf-messaging-stream, que possibilita o uso do modelo publish/subscribe de mensageria. O código fonte do projeto está no nosso repositório github.

Fique ligado que novos artigos sobre os componentes do TJF virão em breve.

--

--

Luca Elert
TOTVS Developers

Engenheiro de Pesquisa e Desenvolvimento na TOTVS.