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 Também na biblioteca
Testcontainers .NET para C# (.NET): guia completo com exemplos
Gerador de QR Codes em Swift: Core Image, CIFilter e Soluções Próprias
Migrações de banco de dados em Node.js: Sequelize, Knex e TypeORM
Configuração de aplicações em Go: melhores práticas e ferramentas
Nodemailer para JavaScript (Node.js): guia completo com exemplos