DEV Community

Juarez Júnior
Juarez Júnior

Posted 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)