RabbitMQ
O RabbitMQ é um sistema de mensageria de código aberto que implementa o padrão de fila de mensagens.
Ele permite que diferentes partes de uma aplicação se comuniquem de forma assíncrona pelo protocolo AMQP, enviando mensagens entre produtores e consumidores.
Info
No exemplo, as mensagens são os JSONs de temperatura
graph LR
subgraph Produtores
P1[Sensor 1]
P2[Sensor 2]
P3[Sensor 3]
end
subgraph Fila
direction LR
F1[(Msg 1)]
F2[(Msg 2)]
F3[(Msg n)]
end
subgraph Consumidores
C1[Pipeline 1]
C2[Pipeline 2]
end
P1 --> Fila
P2 --> Fila
P3 --> Fila
F1 --- F2
F2 --- F3
Fila --> C1
Fila --> C2
AMQP
O AMQP (Advanced Message Queuing Protocol) é um protocolo aberto e padronizado para comunicação entre sistemas por meio de mensagens, usado pelo RabbitMQ.
Ele define como as mensagens são formatadas, roteadas, entregues e confirmadas, permitindo que aplicações escritas em diferentes linguagens e rodando em diferentes plataformas troquem dados de forma confiável e desacoplada.
O RabbitMQ é amplamente utilizado em arquiteturas de microserviços, onde a comunicação entre serviços pode ser feita de forma desacoplada e escalável.
Iniciar o RabbitMQ
Sucesso!
Para ter sucesso durante o curso, mantenha a organização!
Crie um diretório para manter os arquivos da aula!
Criar docker-compose.yml
Vamos iniciar um serviço RabbitMQ usando Docker.
Crie um arquivo docker-compose.yml
com o seguinte conteúdo:
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq-sensores
restart: always
ports:
- 5672:5672
- 15672:15672
volumes:
- ./rabbitmq:/var/lib/rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=112233
Warning
É recomendável utilizar uma senha mais forte que 112233
Question
Answer
A seção ports mapeia as portas do container (interna) para as portas do host (externa, sua máquina):
-
5672:5672
: Isso mapeia a porta5672
do container RabbitMQ para a porta5672
na máquina host. A porta5672
é a porta padrão para AMQP (Advanced Message Queuing Protocol), que é usada para mensageria pelo RabbitMQ. -
15672:15672
: Isso mapeia a porta15672
do container RabbitMQ para a porta15672
na máquina host. A porta15672
é a porta padrão para o RabbitMQ Management Plugin, que fornece uma interface web para gerenciar o RabbitMQ.
Dica
Caso ocorra um conflito de porta (outros serviços que possam estar usando a mesma porta), você pode alterar a porta do host (a primeira) para um número diferente, como 15673:15672
.
Inicie o RabbitMQ
Para iniciar o RabbitMQ, execute o seguinte comando no terminal:
Isso iniciará o RabbitMQ em segundo plano. Você pode verificar se o RabbitMQ está em execução acessando a interface de gerenciamento em http://localhost:15672 com o usuário e senha definidos no docker-compose.yml
.
Para conferir se o RabbitMQ está em execução, você pode usar o seguinte comando:
E para acompanhar os logs:
Uma outra forma
Você pode usar o comando docker logs
para visualizar os logs do container diretamente:
O mesmo para docker ps
:
Painel RabbitMQ
Acesse a interface de gerenciamento do RabbitMQ em http://localhost:15672 com o usuário e senha definidos no docker-compose.yml
.
Problema
Caso você não consiga acessar a interface web, verifique se o container do RabbitMQ está em execução e se as portas estão corretamente mapeadas.