Nesse projeto estão exemplos do tutorial oficial do RabbitMQ. Cada exemplo é um programa Java que utiliza a biblioteca RabbitMQ Java Client para se comunicar com o servidor RabbitMQ.
O servidor RabbitMQ é um broker de mensagens que implementa o protocolo AMQP (Advanced Message Queuing Protocol). Ele é responsável por receber, armazenar e entregar mensagens para os consumidores. Subiremos um servidor RabbitMQ em um contêiner Docker para testar os exemplos.
É necessário ter um servidor RabbitMQ em execução na máquina local e com usuário e senha padrão (guest/guest). No arquivo conexao.properties estão contidas as informações sobre o host
, username
e password
do servidor RabbitMQ. Execute o comando abaixo para subir o servidor RabbitMQ:
docker run --name servidor-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management-alpine
Se abrir no navegador o endereço http://localhost:15672
você verá a interface web do RabbitMQ. Ali você pode ver as filas, trocas, conexões, etc. O usuário e senha padrão são guest/guest
.
Cada exemplo é composto por dois programas, geralmente, um produtor e um consumidor. Abaixo é apresentado como executar cada um dos programas. A explicação do funcionamento de cada exemplo pode ser obtida na documentação oficial do RabbitMQ
No arquivo build.gradle foram criadas tarefas gradle para facilitar a execução de cada exemplo. Para cada exemplo foram criadas 2 tarefas e todas estestão dentro do grupo execution
do gradle.
Também é possível gerar um JAR contendo todos os exemplos, bem como as dependências. Para isso execute os passos abaixo:
- Entre no diretório do projeto
- Digite:
./gradlew shadowJar
- Será criado o pacote
std-1.0-all.jar
dentro do subdiretóriobuild/libs
Para executar cada exemplo com o JAR é necessário fazer algo como:
java -cp build/libs/std-1.0-all.jar ex01.hello.Consumidor
Porém, neste projeto também foram criadas tarefas gradle para facilitar a execução de cada exemplo. Abaixo são apresentados os exemplos, bem como as instruções de execução por meio das tarefas gradle.
Um simples hello world.
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex01Consumidor
./gradlew -q ex01Produtor
Distribuindo tarefas por todos os processos trabalhadores (de forma igualitária - round robin).
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex02Trabalhador
./gradlew -q ex02Tarefa
Enviando mensagens para diversos consumidores.
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex03Receptor
./gradlew -q ex03Produtor
Recebendo mensagens de forma seletiva, escolhendo de qual fila receberá mensagens.
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex04Receptor --args "info"
./gradlew -q ex04Emissor
Recebendo mensagens com base em padrões de texto (tópicos).
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex05Receptor --args "saudacao"
./gradlew -q ex05Emissor --args "saudacao"
Estilo pedido/resposta de uma chamada de procedimento remota.
Execute cada uma das linhas abaixo em um terminal diferente e siga essa sequência de execução.
./gradlew -q ex06Servidor
./gradlew -q ex06Cliente