Devplus.Messaging
2.7.4
dotnet add package Devplus.Messaging --version 2.7.4
NuGet\Install-Package Devplus.Messaging -Version 2.7.4
<PackageReference Include="Devplus.Messaging" Version="2.7.4" />
<PackageVersion Include="Devplus.Messaging" Version="2.7.4" />
<PackageReference Include="Devplus.Messaging" />
paket add Devplus.Messaging --version 2.7.4
#r "nuget: Devplus.Messaging, 2.7.4"
#:package Devplus.Messaging@2.7.4
#addin nuget:?package=Devplus.Messaging&version=2.7.4
#tool nuget:?package=Devplus.Messaging&version=2.7.4
Devplus.Messaging 📬
📬 Biblioteca para integração com RabbitMQ e mensageria.
🚀 Instalação
Para instalar a biblioteca via NuGet, utilize o seguinte comando:
dotnet add package Devplus.Messaging
Ou, no Visual Studio:
- Abra o Gerenciador de Pacotes NuGet.
- Busque por Devplus.Messaging.
- Clique em Instalar.
⚡ Como Usar
📦 Publicando Mensagens
using Devplus.Messaging.Interfaces;
private readonly IMessagingPublisher _messagingPublisher;
public TestMessageService(IMessagingPublisher messagingProducer)
{
_messagingPublisher = messagingProducer;
}
public async Task SendMessage()
{
await _messagingPublisher.PublishAsync(exchangeName: "devplus-test-exchange",
message: "{responseData: \"Test message from TestMessageService\"}",
source: "devplus.test.app",
typeEvent: "test-event");
}
📩 Consumindo Mensagens
using Devplus.Messaging.Interfaces;
using Devplus.Messaging.Models;
namespace Devplus.TestApp.Consumers;
public class TestConsumer : IMessagingConsumer
{
public string ExchangeName => "devplus-test-exchange";
//Opcionais, caso não informados a lib atribuirá valores padrões
public string QueueName => "devplus-test-queue";
public string RoutingKey => "";
public int MaxRetry => 5;
public ushort PrefetchCount => 3;
QueueType QueueType => QueueType.Quorum;
private readonly ILogger<TestConsumer> _logger;
public TestConsumer(ILogger<TestConsumer> logger)
{
_logger = logger;
}
public Task ConsumeAsync(CloudEvent<object> cloudEvent, CancellationToken cancellationToken)
{
_logger.LogInformation("Received message: {Message}", cloudEvent.Data);
return Task.CompletedTask;
}
}
Propriedade | Descrição | Obrig. | Padrão |
---|---|---|---|
ExchangeName | Nome da exchange. É obrigatórios para a lib realizar o bind no RabbitMq. | Sim | N/A |
QueueName | Configura o nome da fila para o criar o bind no Rabbit | Não | $"{ExchangeName.Replace("-exchange", "").Replace(".exchange", "")}-queue" |
RoutingKey | Configura uma chave de roteamento para realizar o bind na fila. | Não | "" |
MaxRetry | Configura o numero máximo de tentativas que a menssagem é processada até ser enviada para DLQ | Não | 5 |
PrefetchCount | Configura o numero máximo de menssagens simultâneas que um consumidor pode consumir antes de enviar um ACK | Não | 3 |
QueueType | Configura o tipo de fila no RabbitMQ (Quorum, Classic) | Não | Quorum |
🗂 DLQ (Dead Letter Queue)
A Dead Letter Queue (DLQ) é utilizada para armazenar mensagens que não puderam ser processadas com sucesso após o número máximo de tentativas configurado.
Configuração de DLQ
O suporte a DLQ, está habilitado por padrão na lib, e usará o seguinte padrão para criar a Exchange e fila:
var dlxExchange = $"{exchangeName}-dlx";
var dlqQueue = $"{queueName}-dlq";
Observação
Caso a menssagem sejá processada até o limite de tentativas configurado em MaxRetry, elá será enviada para a DLQ criada pela lib adicionando o seguintes Headers:
["x-retry-count"] //Total de tentativas
["x-last-process"] //Data hora do útimo processamento
["x-send-dlq"] //Data hora de envio para DLQ
🔧 Configuração via appsettings.json
{
"RabbitMq": {
"Host": "localhost",
"Port": "5672",
"Username": "user",
"Password": "pass",
"VHost": "my_vhost"
}
}
E no Program.cs
:
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
builder.Services.AddMessaging(builder.Configuration);
builder.Services.AddScoped<ITestMessageService, TestMessageService>();
builder.Services.AddScoped<IMessagingConsumer, TestConsumer>();
builder.Services.AddScoped<TestConsumer>();
🛠 Compatibilidade
.NET Version | Suportado |
---|---|
.NET 8.0 | ✅ Sim |
.NET 7.0 | ✅ Sim |
.NET 6.0 | ✅ Sim |
.NET Core 3.1 | ⚠️ Suporte limitado |
.NET Framework | ❌ Não suportado |
📌 Funcionalidades
✅ Suporte ao RabbitMQ com publicação e consumo de mensagens.
✅ Injeção de dependência via IServiceCollection
.
✅ Configuração via appsettings.json
.
✅ Compatível com .NET 6, .NET 7 e .NET 8.
🏗 Contribuindo
Se você quiser contribuir para este projeto:
- Fork o repositório.
- Crie uma branch (
git checkout -b feature/nova-feature
). - Faça commit das alterações (
git commit -m "Add nova feature"
). - Envie um Pull Request.
📄 Licença
Este projeto está licenciado sob a MIT License.
📞 Contato
📧 Email: clayton@devplus.com.br
🔗 LinkedIn: Clayton Oliveira
🚀 Devplus Consultoria: www.devplus.com.br
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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. |
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 9.0.0)
- Microsoft.Extensions.Hosting (>= 9.0.0)
- RabbitMQ.Client (>= 6.6.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
2.7.4 | 923 | 5/20/2025 |
2.7.2 | 128 | 5/17/2025 |
2.7.0 | 211 | 4/30/2025 |
2.6.1 | 168 | 4/29/2025 |
2.5.1 | 209 | 4/23/2025 |
2.5.0 | 250 | 4/14/2025 |
2.4.1 | 174 | 4/8/2025 |
2.4.0 | 174 | 4/8/2025 |
2.2.0 | 184 | 4/7/2025 |
2.1.0 | 177 | 4/6/2025 |
2.0.0 | 468 | 3/25/2025 |
1.0.2 | 274 | 3/23/2025 |
1.0.1 | 156 | 3/20/2025 |
1.0.0 | 182 | 3/19/2025 |