DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

Integração de Microsserviços e Processamento de Mensagens com MassTransit e RabbitMQ

O MassTransit é uma biblioteca leve para processamento de mensagens em .NET. Ele facilita a implementação de comunicação assíncrona entre microsserviços, oferecendo suporte para diversas tecnologias de mensageria, como RabbitMQ, Azure Service Bus e outras. Com o MassTransit, é possível configurar produtores e consumidores de mensagens de forma simples e eficiente, permitindo que os microsserviços se comuniquem de maneira desacoplada. Neste exemplo, vamos demonstrar como configurar o MassTransit para se comunicar com o RabbitMQ.

Bibliotecas:

Para usar a biblioteca MassTransit e conectar-se ao RabbitMQ, instale os seguintes pacotes NuGet no seu projeto. Certifique-se de que o RabbitMQ está instalado e em execução.

Install-Package MassTransit Install-Package MassTransit.RabbitMQ 
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using MassTransit; using System; using System.Threading.Tasks; namespace MassTransitExemplo { // Definindo a mensagem public class PedidoCriado { public string Id { get; set; } public DateTime Data { get; set; } } // Definindo o consumidor da mensagem public class PedidoCriadoConsumer : IConsumer<PedidoCriado> { public Task Consume(ConsumeContext<PedidoCriado> context) { Console.WriteLine($"Pedido recebido: {context.Message.Id} em {context.Message.Data}"); return Task.CompletedTask; } } class Program { static async Task Main(string[] args) { // Configurando o MassTransit com RabbitMQ var busControl = Bus.Factory.CreateUsingRabbitMq(cfg => { cfg.Host("rabbitmq://localhost", h => { h.Username("guest"); h.Password("guest"); }); // Configurando o consumidor cfg.ReceiveEndpoint("pedido_queue", e => { e.Consumer<PedidoCriadoConsumer>(); }); }); // Iniciando o bus await busControl.StartAsync(); try { // Publicando uma mensagem var pedido = new PedidoCriado { Id = Guid.NewGuid().ToString(), Data = DateTime.Now }; await busControl.Publish(pedido); Console.WriteLine("Pedido publicado."); Console.ReadLine(); } finally { await busControl.StopAsync(); } } } } 
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, configuramos o MassTransit para trabalhar com o RabbitMQ. Criamos uma mensagem chamada PedidoCriado que contém as propriedades Id e Data. Em seguida, definimos um consumidor de mensagens chamado PedidoCriadoConsumer, que processa mensagens do tipo PedidoCriado. O Bus.Factory.CreateUsingRabbitMq é usado para configurar o RabbitMQ, especificando o host e as credenciais. No método Main, o busControl é iniciado, e uma mensagem de PedidoCriado é publicada. O consumidor captura essa mensagem e imprime seus detalhes no console.

Conclusão:

O MassTransit simplifica a comunicação entre microsserviços, facilitando o processamento de mensagens assíncronas com RabbitMQ e outros serviços de mensageria. Ele abstrai a complexidade do gerenciamento de filas e tópicos, permitindo que os desenvolvedores foquem na lógica de negócios.

Código fonte: GitHub

Top comments (0)