Neste artigo vamos continuar a criar a aplicação que o RabbitMQ em uma aplicação Asp.NET Core Web API. |
Continuando o artigo anterior vamos incluir uma aplicação console no projeto
criado.
Criando o projeto Console
Com o projeto Web API aberto no VS 2022 selecione a opção File -> Add -> New Project , selecionando o template ConsoleApp e informando o nome ApiRabbitMQ.ConsoleApp.
Vamos deixar
desmarcada a opção : Do not use top-level statements.
Inclua no projeto console uma referência ao pacote RabbitMQ.Client.
A seguir na classe Program vamos incluir o código abaixo:
using RabbitMQ.Client; using RabbitMQ.Client.Events; using System.Text; //Definição do servidor Rabbit MQ : usamos uma imagem Docker //Cria uma conexão RabbitMQ usando uma factory //Cria um channel com sessão e model //declara a fila(queue) a seguir o nome e propriedades //Define o objeto Event o qual vai ouvir a mensagem do channel enviado pelo producer consumer.Received += (model, eventArgs) =>
//le a mensagem Console.ReadKey(); |
Aqui definimos o código que vai receber ler a fila de mensagens enviadas pela aplicação Web API.
Criando o container do RabbitMQ
Agora precisamos do RabbitMQ e ao invés de fazer a instalação em nossa máquina local vamos usar a imagem oficial :
rabbitmq:3-management
Para baixar a imagem usamos o comando do Docker : docker pull rabbitmq:3-management
Com a imagem baixada localmente vamos levantar um container docker usando esta imagem:
docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management
Este comando criar um container no modo iterativo mapeando a porta 5672 para a porta 15672 no host local.
Podemos agora acessar o RabbitMQ abrindo o navegador no endereço : http://localhost:15672/
Para acessar usamos o username guest e password guest.
Acima estamos exibindo a visão das filas ou Queues e até o momento não temos uma fila criada. Após acionar a aplicação Web API iremos criar a fila - product.
Agora podemos configurar o nosso projeto para abrir os projetos Web API e Console na inicilização definindo a opção Multiple startup projects :
Depois disso vamos executar o projeto e acionar o endpoint
api/products/addproduct e vamos incluir alguns
produtos apenas para testar:
Vamos clicar algumas vezes o botão Execute para simular a inclusão de alguns produtos.
Após isso vamos abrir o RabbitMQ verificamos que a fila product foi criada:
Expandindo a fila product e clicando em GetMessages veremos o gráfico representando o pico das mensagens que enviamos :
No projeto console temos as mensagens lidas da fila sendo exibidas conforme abaixo:
Temos assim um exemplo prático e simples do funcionamento do RabbitMQ que você pode expandir e usar de acordo com sua necessidade e propósito.
Note que usando uma imagem docker e criando um container nosso ambiente não precisou incluir pacotes ou referência do RabbitMQ.
Pegue o projeto aqui :
ApiRabbitMq.zip (sem as referências)
"Porque não nos
chamou Deus para a imundícia, mas para a santificação"
1 Tessalonicenses 4:7
Referências: