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

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more