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.
Código fonte: GitHub
Top comments (0)