Skip to content

BoscoBecker/WorkerRabbitMQ.NET

Repository files navigation

WorkerRabbitMQ.NET

Solução em .NET 9 com workers que publicam e consomem mensagens via RabbitMQ, utilizando o modelo Hosted Service (Background Services).

Estrutura da solução

A solução é composta por dois projetos Worker:

Projeto Descrição
WorkerRabbitMQ.NET.Publisher Worker que publica mensagens na fila RabbitMQ.NET a cada 10 segundos.
WorkerRabbitMQ.NET.Consumer Worker que consome mensagens da fila RabbitMQ.NET.

Diagrama de fluxo

┌─────────────────────────────┐         ┌──────────────────┐         ┌─────────────────────────────┐
│  WorkerRabbitMQ.NET.Publisher│  ────►  │  RabbitMQ (fila  │  ────►  │ WorkerRabbitMQ.NET.Consumer │
│  Publica: Hello, World, ...  │         │  "RabbitMQ.NET") │         │  Consome e exibe mensagens   │
└─────────────────────────────┘         └──────────────────┘         └─────────────────────────────┘

Pré-requisitos

latest RabbitMQ 4.x

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4-management

Subir o RabbitMQ (Docker)

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

Como executar

1. Restaurar e compilar a solução

Na pasta raiz da solução (WorkerRabbitMQ.NET):

dotnet restore
dotnet build

2. Iniciar o Consumer (primeiro)

O consumer precisa estar rodando para receber as mensagens:

cd WorkerRabbitMQ.NET.Consumer/WorkerRabbitMQ.NET.Consumer
dotnet run

3. Iniciar o Publisher (em outro terminal)

cd WorkerRabbitMQ.NET.Publisher/WorkerRabbitMQ.NET.Publisher
dotnet run

O Publisher envia as mensagens Hello, World, From, Worker, RabbitMQ e Consumer uma a uma, com intervalo de 10 segundos. O Consumer exibe cada mensagem recebida no console.

Tecnologias e pacotes

  • .NET 9 – Worker / Hosted Service
  • Microsoft.Extensions.Hosting (9.0.13) – IHost, BackgroundService
  • RabbitMQ.Client (7.2.0) – cliente AMQP para publicar e consumir

Configuração

A conexão com o RabbitMQ usa por padrão HostName = "localhost". Para alterar host, porta, usuário ou senha, ajuste a ConnectionFactory nos arquivos:

  • Publisher: WorkerRabbitMQ.NET.Publisher/PublishMessage.cs
  • Consumer: WorkerRabbitMQ.NET.Consumer/ConsumerMessage.cs

Exemplo com mais opções:

var factory = new ConnectionFactory
{
    HostName = "localhost",
    Port = 5672,
    UserName = "guest",
    Password = "guest"
};

Para ambientes de produção, prefira configuração via appsettings.json, variáveis de ambiente ou User Secrets, em vez de valores fixos no código.

Estrutura dos projetos

WorkerRabbitMQ.NET.Publisher

  • Program.cs – Configura o host e registra o Worker como IHostedService.
  • Worker.csBackgroundService que, em loop, envia mensagens da lista e chama PublishMessage.SendMessage.
  • PublishMessage.cs – Declara a fila RabbitMQ.NET e publica mensagens via BasicPublishAsync.

WorkerRabbitMQ.NET.Consumer

  • Program.cs – Configura o host e registra o Worker como IHostedService.
  • Worker.csBackgroundService que inicia o consumo chamando ConsumerMessage.ReceiveMessage.
  • ConsumerMessage.cs – Declara a fila, cria um AsyncEventingBasicConsumer e consome mensagens com BasicConsumeAsync.

Licença

Uso interno / estudo. Ajuste conforme a política do seu projeto.

About

Implementando Mensageria usando RabbitMQ e .NET

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages