PulseBus 1.1.1
dotnet add package PulseBus --version 1.1.1
NuGet\Install-Package PulseBus -Version 1.1.1
<PackageReference Include="PulseBus" Version="1.1.1" />
<PackageVersion Include="PulseBus" Version="1.1.1" />
<PackageReference Include="PulseBus" />
paket add PulseBus --version 1.1.1
#r "nuget: PulseBus, 1.1.1"
#:package PulseBus@1.1.1
#addin nuget:?package=PulseBus&version=1.1.1
#tool nuget:?package=PulseBus&version=1.1.1
🚌 PulseBus
Fast. Minimal. Universal.
PulseBus is a lightweight, provider-agnostic messaging abstraction for .NET, designed to unify message publishing and consuming across multiple providers with a focus on Clean Architecture and High Performance.
📑 Table of Contents
🚀 Features
- Unified API: Single interface to interact with RabbitMQ, SQS, Kafka, etc.
- Middleware Pipeline: Extensible pipeline similar to ASP.NET Core.
- Flexible Serialization: Support for JSON, Protobuf, MessagePack, and custom serializers.
- Resilience: Built-in retry policies and idempotency support.
- Lightweight: Zero external dependencies in the core (
PulseBuspackage). - Extensible: Easily add new providers through a plugin-based design.
📦 Installation
Install the base package via NuGet:
dotnet add package PulseBus
Then, add the provider you need:
| Provider | NuGet Package |
|---|---|
| RabbitMQ | dotnet add package PulseBus.RabbitMQ |
| AWS SQS | dotnet add package PulseBus.SQS |
| Azure Queue | dotnet add package PulseBus.AzureQueue |
| Kafka | dotnet add package PulseBus.Kafka |
🧩 Quick Start
Register PulseBus in your dependency injection container (Program.cs or Startup.cs):
using PulseBus.Extensions;
services.AddPulseBus(builder =>
{
// Configure your provider
builder.UseRabbitMq(options =>
{
config.Host = "localhost";
config.Port = 5672;
config.Username = "guest";
config.Password = "guest";
config.UseTls = false;
});
});
💻 Usage
Publishing
Send messages asynchronously to any configured bus:
// Previously in constructor
private readonly IMessageBus _messageBus;
public UserService(IMessageBus messageBus)
{
_messageBus = messageBus;
}
await _messageBus.PublishAsync("user.requested", new UserRequested
{
Email = "andres@example.com",
Name = "Andrés"
});
Subscribing
Define message handlers easily:
[Queue("user.requested")]
[Retry(3, 5)]
[Prefetch(16)]
public class OrderCreatedListener
{
public Task HandleAsync(UserRequested message, IMessageContext context)
{
Console.WriteLine($"Processing {message.Email}");
return Task.CompletedTask;
}
}
🔧 Middlewares
You can agree middlewares:
bus.UseMiddleware(new LoggingMiddleware());
bus.UseMiddleware(new RetryMiddleware());
Implementation
public class LoggingMiddleware : IMessageMiddleware
{
public async Task InvokeAsync(MiddlewareContext context, MiddlewareDelegate next)
{
Console.WriteLine($"Processing ... {context.Envelope.MessageId}");
await next(context);
}
}
🧱 Architecture
PulseBus is built on solid interfaces that allow you to decouple your business logic from the messaging infrastructure:
IMessageBus: Main entry point.IMessageProducer/IMessageConsumer: Transport abstractions.IMessageMiddleware: For logging, validation, or telemetry.IIdempotencyStore: Integrated duplicate control.
💖 Support
This project is developed and maintained by Andrés Mariño. If you find this library useful, consider supporting its continued development:
📝 License
This project is licensed under the MIT License. See the LICENSE file for details.
Made with ❤️ for the .NET community
| 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 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 is compatible. 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. |
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
-
net9.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on PulseBus:
| Package | Downloads |
|---|---|
|
PulseBus.RabbitMQ
RabbitMQ provider for PulseBus, the minimalistic and extensible messaging abstraction for .NET. |
|
|
PulseBus.Extensions
Extensions pack for PulseBus: JSON serialization, retry policies, logging middleware, idempotency store and more. |
GitHub repositories
This package is not used by any popular GitHub repositories.