top of page

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

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();
            }
        }
    }
}

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.


0 visualização

Posts recentes

Ver tudo

Dica C#: Default Interface Methods

Vamos falar sobre uma novidade do C# 12: Default Interface Methods. Esse recurso permite que interfaces contenham implementações de...

Dica C#: Global Using Directives

Vamos para uma dica do C# 10: Global Using Directives. Com essa funcionalidade, você pode definir diretivas using globais que se aplicam...

bottom of page