/RabbitMQSpring

This project was used in Java version 11 and a spring-rabbitmq API. In this way, different communication environments were created using the messaging system rabbitmq. The usage scenarios are described in the readme.

Primary LanguageJava

# RabbitMQSpring

Descrição
----------

Esse projeto está associado ao curso da DIO - Digital Innovation One - utilizando Java para criar um ambiente de 
comunicação assíncrona com o sistema RabbitMQ. Se quiser saber mais sobre o sistema de mensageria RabbitMQ
acesse: https://simplificandoredes.com/rabbitmq-1-o-que-sao-sistemas-de-mensageria/.

Neste projeto foi utilizado a versão 11 do Java e a API spring-rabbitmq. Dessa forma, foram criados ambientes distintos de comunicação
por sistema de mensageria. Os cenários dos casos de uso estão descritos na próxima seção.

Quanto ao sistema de mensageria, utilizamos o RabbitMQ instalado em um ambiente de container (virtualização) com docker.
Para instalação e configuração do Docker acesse: https://simplificandoredes.com/docker-instalacao/.

O acesso ao RabbitMQ foi realizado em curso via terminal, web API e através da interface Portainer.
Caso tenha interesse em utilizar o Portainer.io acesse: https://simplificandoredes.com/portainer-instalacao-e-configuracao/


Conteúdo
---------

A raiz contem uma arquivo denominado docker-compose.yml. Portanto, este arquivo não faz parte do projeto Java Spring. Mova-o para a uma pasta dedicada 
ao docker-compose. Continuando ... Este arquivo, possui as configurações utilizadas para criar o container com imagem 
RabbitMQ. Dessa formal, foram setados alguns parâmetros como: restart com sistema do host, mapeamento de dados entre host e container, imagem 
utilizada do docker hub.

Caso você ainda não conhece os conceitos de virtualização e as vantagens do docker, 
acesse esse artigo com a descrição toda dessa ferramenta. Link: https://simplificandoredes.com/docker-instalacao/.

Os exemplos estão organizados como segue:

demo - exemplo simplificado de troca de mensagens em sistema de filas "puro";
Work Queue - simulando processamento decorrente de mensagens com payload "pesado" (ex:simulando imagens);
Pub/Sub - comunicação utilizando a intermediação da exchange do tipo fanout;
Routing - defindo labels através da routing key;
Topic - utilizando exchange do tipo topic na comunicação;
PubConfirmation - utilizando confirmação de envio de mensagens do produtor à exchange;
DLX - Criando e utilizando uma Dead Letter Exchange para mensagens com TTL expirado.