MassTransit para C# (.NET): guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

MassTransit para C# (.NET): guia completo com exemplos práticos

1. O que é e para que serve

MassTransit é uma biblioteca poderosa, open-source e amplamente utilizada para criar aplicações distribuídas na plataforma .NET. Ela fornece uma abstração de alto nível sobre diversos sistemas de mensageria (message brokers), como RabbitMQ, Azure Service Bus, Amazon SQS/SNS, ActiveMQ e Kafka (através de conectores). O principal objetivo do MassTransit é simplificar o desenvolvimento de serviços que se comunicam através de mensagens assíncronas, eliminando a necessidade de lidar com detalhes de baixo nível de cada broker específico.

Para que serve o MassTransit? Na arquitetura moderna de microsserviços, os serviços precisam se comunicar de forma confiável e assíncrona. Em vez de chamadas HTTP diretas (que podem causar falhas em cascata e alto acoplamento), utiliza-se a troca de mensagens. O MassTransit assume tarefas complexas como: gerenciamento de conexões e canais, tentativas de reenvio em caso de falhas, tratamento de erros, transações distribuídas (através de sagas), gerenciamento de filas e tópicos, serialização/desserialização de mensagens, além de fornecer uma API conveniente para enviar, publicar e consumir mensagens.

A biblioteca implementa vários padrões essenciais: Command-Query Separation (através do envio de comandos), Publish-Subscribe (através da publicação de eventos), Request-Response (para troca síncrona via mensagens assíncronas) e Saga Pattern (para gerenciar processos de negócio de longa duração). Graças a isso, o MassTransit é o padrão de facto para construir sistemas distribuídos confiáveis, escaláveis e testáveis em .NET.

2. Instalação

O MassTransit é instalado via NuGet. Dependendo do broker de mensagens utilizado, você precisará instalar o pacote principal e o pacote para o transporte específico.

Instalação básica (sem transporte):

dotnet add package MassTransit

Para RabbitMQ:

dotnet add package MassTransit.RabbitMQ

Para Azure Service Bus:

dotnet add package MassTransit.Azure.ServiceBus.Core

Para Amazon SQS:

dotnet add package MassTransit.AmazonSQS

Para Kafka:

dotnet add package MassTransit.Kafka

3. Início rápido — exemplo funcional mínimo

Abaixo está um exemplo simples de envio e recebimento de mensagens usando RabbitMQ. Certifique-se de que o RabbitMQ esteja em execução (por exemplo, via Docker: docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management).

using System;
using System.Threading.Tasks;
using MassTransit;

// 1. Definindo o contrato da mensagem
public record OrderSubmitted
{
    public Guid OrderId { get; init; }
    public string CustomerName { get; init; }
}

// 2. Definindo o consumidor (Consumer)
public class OrderSubmittedConsumer : IConsumer<OrderSubmitted>
{
    public async Task Consume(ConsumeContext<OrderSubmitted> context)
    {
        var message = context.Message;
        Console.WriteLine($"[Consumer] Pedido recebido: {message.OrderId} de {message.CustomerName}");
        await Task.CompletedTask;
    }
}

// 3. Configurando e iniciando o barramento
public class Program
{
    public static async Task Main()
    {
        var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
        {
            cfg.Host("localhost", "/", h =>
            {
                h.Username("guest");
                h.Password("guest");
            });

            cfg.ReceiveEndpoint("order-queue", e =>
            {
                e.Consumer<OrderSubmittedC                    

Recommendations