.NET 5 + RabbitMQ: exemplos de implementação

Renato Groffe
3 min readJan 3, 2021

--

Neste post trago 2 exemplos de utilização de RabbitMQ com .NET 5: uma Console Application para envio de mensagens a uma fila, além de um Worker Service para processamento destas mensagens. Nas 2 aplicações fiz uso do package RabbitMQ.Client para permitir assim a comunicação com um broker do RabbitMQ.

Estes projetos já foram disponibilizados no GitHub:

.NET 5 + Console Application + RabbitMQ + Queues + Sender + Serilog

.NET 5 + Worker Service + RabbitMQ + Queues + Consumer

Na próxima listagem está a implementação da Console Application EnvioRabbitMQ, empregando no envio de mensagens a uma fila do RabbitMQ:

Na classe Worker do projeto WorkerConsumoRabbitMQ acontecerá o consumo de mensagens enviadas a uma fila, com o método Consumer_Received sendo vinculado ao evento Received de uma instância de EventingBasicConsumer (namespace RabbitMQ.Client.Events) em ExecuteAsync:

Importante destacar que o uso do template Worker Service traz como vantagens diversas funcionalidades habilitadas por default como logging, o mecanismo de configurações do próprio .NET e injeção de dependências.

Também neste segundo exemplo serão informados parâmetros durante a execução do comando dotnet run: a string de conexão com o RabbitMQ e a fila a partir da qual ocorre o consumo das mensagens. Tais valores ficarão vinculados a uma instância do tipo ParametrosExecucao, como indicado na listagem a seguir:

Para os testes das 2 aplicações indicadas neste post utilizei uma fila chamada filatestes, enviando inicialmente 3 mensagens como especificado no comando a seguir:

dotnet run "<STRING DE CONEXÃO>" "filatestes" "msg1" "msg2" "msg3"

Na sequência iniciei a aplicação de consumo com o comando:

dotnet run "<STRING DE CONEXÃO>" "filatestes"

E enviei novas mensagens utilizando os comandos:

dotnet run "<STRING DE CONEXÃO>" "filatestes"

O resultado desses testes pode ser observado na imagem seguinte:

O uso do RabbitMQ é tema frequente de lives no Canal .NET, tanto que no ano de 2020 esta tecnologia open source foi destaque em 2 eventos gratuitos cujas gravações estão disponíveis no YouTube (e que já contam com milhares de views!):

Quando pensamos em mensageria temos inúmeras alternativas, levando-se em conta as várias tecnologias oferecidas no mercado e suas diferentes possibilidades…

E nesta semana teremos mais um evento online e gratuito cobrindo este tema. Desta vez uma mesa redonda (edição #56) do canal Coding Night, em que discutiremos como se beneficiar em diversos tipos de projetos do uso de soluções como Azure Queue Storage, Azure Service Bus, RabbitMQ e Apache Kafka em cenários envolvendo mensageria e microsserviços.

Quando: 07/01/2021 (quinta) a partir das 21:00 — horário de Brasília

Para participar gratuitamente faça sua inscrição acessando o link:

https://bit.ly/mesa-redonda-56

E caso precise aprofundar seus conhecimentos sobre RabbitMQ, deixo aqui o convite para você participar da MasterClass RabbitMQ para aplicações .NET!

Esta é uma iniciativa promovida pelo meu amigo Luiz Carlos Faria (Microsoft MVP, MTAC, gaGO.io) e que acontecerá agora nos dias 9 e 10 de Janeiro de 2021 (próximos sábado e domingo).

Para saber mais a respeito e efetuar sua inscrição acesse:

https://bit.ly/rabbitmq-masterclass-blog-groffe

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker