PulseBus 1.1.1

dotnet add package PulseBus --version 1.1.1
                    
NuGet\Install-Package PulseBus -Version 1.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PulseBus" Version="1.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PulseBus" Version="1.1.1" />
                    
Directory.Packages.props
<PackageReference Include="PulseBus" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PulseBus --version 1.1.1
                    
#r "nuget: PulseBus, 1.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PulseBus@1.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PulseBus&version=1.1.1
                    
Install as a Cake Addin
#tool nuget:?package=PulseBus&version=1.1.1
                    
Install as a Cake Tool

PulseBus Banner

🚌 PulseBus

NuGet Version License: MIT .NET Core

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 (PulseBus package).
  • 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:

  • Bitcoin (BTC): bc1p9zqgxghkjhauruhsza9n382e6kp5tpj4xtzu2csv4mypsdtdc4tqvdyg86
  • Ko-fi: Support Me

📝 License

This project is licensed under the MIT License. See the LICENSE file for details.


Made with ❤️ for the .NET community

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.

Version Downloads Last Updated
1.1.1 74 5/21/2026
1.1.0 75 5/20/2026
1.0.4 101 5/19/2026
1.0.3 134 5/18/2026
1.0.2 67 5/18/2026
1.0.1 48 5/17/2026
1.0.0 51 5/17/2026