Aj.RabbitMQ.Core 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Aj.RabbitMQ.Core --version 1.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Aj.RabbitMQ.Core --version 1.0.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Aj.RabbitMQ.Core&version=1.0.1
                    
nuke :add-package Aj.RabbitMQ.Core --version 1.0.1
                    

Aj.RabbitMQ.Core

🚀 Biblioteca .NET para abstração de mensageria no RabbitMQ, totalmente extensível, orientada a microsserviços e multi-tenant.


✨ Recursos

✅ Conexão centralizada (singleton)
✅ Configuração via IConfiguration e DataAnnotations
✅ Declaração de exchanges, filas, bindings padronizados
✅ Suporte a prefetch (QoS)
✅ Envelope de mensagens estruturado (MessageEnvelope)
✅ Retry e DLQ integrado (padrão de robustez)
✅ Helpers para exchanges direct, topic, fanout
✅ Extensões para injeção no IServiceCollection


📦 Instalação

no seu projeto:

dotnet add package Aj.RabbitMQ.Core

⚙️ Configuração

adicione ao seu appsettings.json:

"RabbitMQSettings": {
  "HostName": "localhost",
  "UserName": "admin",
  "Password": "123456",
  "VirtualHost": "/",
  "Port": 5672,
  "TenantId": "tenant1"
}

OBS: A Propriedade "TenantId" so deve ser informada caso a fila precise ser exclusiva do Client.

e registre no Program.cs:

builder.Services.AddRabbitMQServices(builder.Configuration);

🚀 Uso Básico

var connectionFactory = serviceProvider.GetRequiredService<RabbitMQConnectionFactory>();
var channel = await connectionFactory.GetChannelAsync();

🟦 Retry + DLQ

por padrão, sugerimos:

  • fila normal
  • fila .retry com x-message-ttl
  • fila .dlq para mensagens definitivas
  • exchanges:
    • direct.order
    • direct.retry
    • direct.dlq

📚 Exemplos avançados

declarar exchange

await _channel.ExchangeDeclareAsync(
    exchange: "direct.order",
    type: "direct",
    durable: true,
    autoDelete: false
);

declarar fila com TTL + DLQ

await _channel.QueueDeclareAsync(
    queue: "order.billing.retry",
    durable: true,
    exclusive: false,
    autoDelete: false,
    arguments: new Dictionary<string, object>
    {
        { "x-message-ttl", 300000 },
        { "x-dead-letter-exchange", "direct.order" },
        { "x-dead-letter-routing-key", "order.created" }
    }
);

✅ Checklist de Qualidade

  • Multi-tenant
  • Extensível
  • Segue princípios SOLID
  • Fácil integração com MediatR e Polly
  • Suporte ao plugin management do RabbitMQ

👨‍💻 Contribuições

Pull Requests são muito bem-vindos!
Basta abrir uma issue ou PR neste repositório.


📄 Licença

MIT

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.14 18 8/11/2025
1.0.13 179 8/6/2025
1.0.12 170 8/6/2025
1.0.11 170 8/5/2025
1.0.10 174 8/5/2025
1.0.9 47 8/1/2025
1.0.8 436 7/24/2025
1.0.7 129 7/15/2025
1.0.6 166 7/15/2025
1.0.5 112 7/15/2025
1.0.1 85 6/27/2025

Versão inicial do Aj.RabbitMQ.Core com suporte a exchanges, filas, retry e dead-letter queues.