LiteBus.Queries.Abstractions
4.1.0
dotnet add package LiteBus.Queries.Abstractions --version 4.1.0
NuGet\Install-Package LiteBus.Queries.Abstractions -Version 4.1.0
<PackageReference Include="LiteBus.Queries.Abstractions" Version="4.1.0" />
<PackageVersion Include="LiteBus.Queries.Abstractions" Version="4.1.0" />
<PackageReference Include="LiteBus.Queries.Abstractions" />
paket add LiteBus.Queries.Abstractions --version 4.1.0
#r "nuget: LiteBus.Queries.Abstractions, 4.1.0"
#:package LiteBus.Queries.Abstractions@4.1.0
#addin nuget:?package=LiteBus.Queries.Abstractions&version=4.1.0
#tool nuget:?package=LiteBus.Queries.Abstractions&version=4.1.0
<h1 align="center"> <a href="https://github.com/litenova/LiteBus"> <img src="assets/logo/icon.png" alt="LiteBus Logo" width="128"> </a> <br> LiteBus </h1>
<h4 align="center">A lightweight, high-performance mediator for building clean, scalable, and testable .NET applications with CQS and DDD.</h4>
<p align="center"> <a href="https://github.com/litenova/LiteBus/actions/workflows/release.yml"> <img src="https://github.com/litenova/LiteBus/actions/workflows/release.yml/badge.svg" alt="Build Status" /> </a> <a href="https://codecov.io/gh/litenova/LiteBus" > <img src="https://codecov.io/gh/litenova/LiteBus/graph/badge.svg?token=XBNYITSV5A" alt="Code Coverage" /> </a> <a href="https://www.nuget.org/packages/LiteBus.Commands.Extensions.Microsoft.DependencyInjection"> <img src="https://img.shields.io/nuget/vpre/LiteBus.Commands.Extensions.Microsoft.DependencyInjection.svg" alt="NuGet Version" /> </a> </p>
<p align="center"> For detailed documentation and examples, please visit the <strong><a href="https://github.com/litenova/LiteBus/wiki">Wiki</a></strong>. </p>
LiteBus is an in-process mediator designed from the ground up for modern .NET. It helps you implement Command Query Separation (CQS) and Domain-Driven Design (DDD) patterns by providing a clean, decoupled architecture for your application's business logic.
Why Choose LiteBus?
CQS & DDD First-Class Citizens: Enforces clean architecture with distinct, semantic contracts like
ICommand<TResult>,IQuery<TResult>, andIEvent. You can even publish pure POCO domain events without coupling your model to the framework.Optimized for High Performance: Minimizes runtime overhead by discovering and caching handler metadata at startup. Handlers are resolved lazily from your DI container, and large datasets are handled efficiently with
IAsyncEnumerable<T>streaming viaIStreamQuery<T>.Granular Pipeline Customization: Go beyond simple behaviors with a full pipeline of pre-handlers, post-handlers, and error handlers. Filter handlers by context using
[HandlerTag]attributes and dynamic predicates.Advanced Event Concurrency: Take full control over your event processing. Configure
SequentialorParallelexecution for both priority groups and for handlers within the same group, allowing you to fine-tune your application's throughput and determinism.DI-Agnostic & Resilient: Decoupled from any specific DI container, with first-class support for Microsoft DI and Autofac. It also includes a built-in Durable Command Inbox for guaranteed, at-least-once execution of critical commands.
Quick Example
Here’s how to define and handle a command to create a new product.
1. Define the Command
A command is a simple object representing a request. This one returns the Guid of the new product.
public sealed record CreateProductCommand(string Name, decimal Price) : ICommand<Guid>;
2. Implement the Handler
The handler contains the business logic to process the command.
public sealed class CreateProductCommandHandler : ICommandHandler<CreateProductCommand, Guid>
{
private readonly IProductRepository _repository;
public CreateProductCommandHandler(IProductRepository repository) => _repository = repository;
public async Task<Guid> HandleAsync(CreateProductCommand command, CancellationToken cancellationToken)
{
var product = new Product(command.Name, command.Price);
await _repository.AddAsync(product, cancellationToken);
return product.Id;
}
}
3. Configure and Use
Register LiteBus in Program.cs and inject ICommandMediator to send your command.
// In Program.cs
builder.Services.AddLiteBus(liteBus =>
{
// This registers the Command Module and scans the assembly for handlers.
// The core MessageModule is included automatically.
liteBus.AddCommandModule(module =>
{
module.RegisterFromAssembly(typeof(Program).Assembly);
});
});
// In your API Controller
[ApiController]
public class ProductsController : ControllerBase
{
private readonly ICommandMediator _commandMediator;
public ProductsController(ICommandMediator commandMediator) => _commandMediator = commandMediator;
[HttpPost]
public async Task<IActionResult> Create(CreateProductCommand command)
{
var productId = await _commandMediator.SendAsync(command);
return CreatedAtAction(nameof(GetById), new { id = productId }, productId);
}
}
Installation
The recommended way to get started is by installing the extension package for your DI container and the modules you need.
For Microsoft Dependency Injection
dotnet add package LiteBus.Commands.Extensions.Microsoft.DependencyInjection
dotnet add package LiteBus.Queries.Extensions.Microsoft.DependencyInjection
dotnet add package LiteBus.Events.Extensions.Microsoft.DependencyInjection
Documentation
For comprehensive guides, advanced features, and best practices, please visit the LiteBus Wiki.
Key pages include:
- Getting Started: A detailed walkthrough for new users.
- v4.0 Migration Guide: A critical guide for upgrading from v3.
- Advanced Concepts: Learn about the Execution Context, Handler Filtering, and more.
- Durable Command Inbox: A guide to guaranteed command processing.
Available Packages
The LiteBus ecosystem is split into several packages so you can install only what you need.
Core Modules & Abstractions
| Package | Version |
|---|---|
LiteBus.Commands |
|
LiteBus.Commands.Abstractions |
|
LiteBus.Queries |
|
LiteBus.Queries.Abstractions |
|
LiteBus.Events |
|
LiteBus.Events.Abstractions |
|
LiteBus.Messaging |
|
LiteBus.Messaging.Abstractions |
Runtime & DI Extensions
Contributing
Contributions are welcome! Please feel free to open an issue or submit a pull request.
License
LiteBus is licensed under the MIT License. See the LICENSE file for details.
| 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 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
- LiteBus.Messaging.Abstractions (>= 4.1.0)
-
net9.0
- LiteBus.Messaging.Abstractions (>= 4.1.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on LiteBus.Queries.Abstractions:
| Package | Downloads |
|---|---|
|
LiteBus.Queries
LiteBus is a lightweight, flexible in-process mediator for implementing Command Query Separation (CQS) patterns in .NET applications. |
|
|
LiteBus
LiteBus is a lightweight, flexible in-process mediator for implementing Command Query Separation (CQS) patterns in .NET applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.1.0 | 364 | 10/30/2025 |
| 4.0.0 | 2,123 | 9/18/2025 |
| 3.1.0 | 6,625 | 8/5/2025 |
| 3.0.0 | 4,055 | 7/21/2025 |
| 2.2.3 | 756 | 7/18/2025 |
| 2.2.2 | 194 | 7/18/2025 |
| 2.2.1 | 939 | 7/8/2025 |
| 2.2.0 | 251 | 7/8/2025 |
| 2.1.0 | 269 | 7/1/2025 |
| 2.0.0 | 3,543 | 4/29/2025 |
| 1.1.0 | 246 | 4/24/2025 |
| 1.0.0 | 181 | 4/19/2025 |
| 0.25.1 | 268 | 4/17/2025 |
| 0.25.0 | 263 | 4/13/2025 |
| 0.24.4 | 235 | 4/10/2025 |
| 0.24.3 | 3,697 | 5/2/2024 |
| 0.24.2 | 273 | 4/16/2024 |
| 0.24.1 | 233 | 1/30/2024 |
| 0.23.1 | 2,216 | 1/11/2024 |
| 0.23.0 | 297 | 12/23/2023 |
| 0.22.0 | 244 | 12/23/2023 |
| 0.21.0 | 249 | 12/18/2023 |
| 0.20.2 | 273 | 12/8/2023 |
| 0.20.1 | 257 | 12/5/2023 |
| 0.20.0 | 1,155 | 12/5/2023 |
| 0.19.1 | 242 | 11/25/2023 |
| 0.19.0 | 228 | 11/23/2023 |
| 0.18.4 | 246 | 11/23/2023 |
| 0.18.3 | 260 | 11/23/2023 |
| 0.18.2 | 260 | 11/22/2023 |
| 0.18.1 | 888 | 11/6/2023 |
| 0.18.0 | 283 | 11/1/2023 |
| 0.17.1 | 256 | 10/20/2023 |
| 0.16.0 | 307 | 9/26/2023 |
| 0.15.1 | 2,541 | 6/23/2023 |
| 0.15.0 | 338 | 6/23/2023 |
| 0.14.1 | 334 | 6/22/2023 |
| 0.14.0 | 635 | 11/30/2022 |
| 0.13.0 | 1,004 | 10/7/2022 |
| 0.12.0 | 9,019 | 1/6/2022 |
| 0.11.3 | 4,484 | 12/27/2021 |
| 0.11.2 | 658 | 12/27/2021 |
| 0.11.1 | 681 | 12/26/2021 |
| 0.11.0 | 697 | 12/23/2021 |
| 0.10.2 | 665 | 12/22/2021 |
| 0.10.1 | 672 | 12/20/2021 |
| 0.10.0 | 777 | 12/15/2021 |
| 0.9.1 | 1,203 | 10/25/2021 |
| 0.9.0 | 859 | 10/25/2021 |
| 0.8.1 | 4,102 | 10/9/2021 |
| 0.8.0 | 2,067 | 9/7/2021 |
| 0.7.0 | 1,660 | 8/19/2021 |
| 0.6.3 | 1,218 | 8/9/2021 |
| 0.6.2 | 852 | 8/9/2021 |
| 0.6.1 | 857 | 8/9/2021 |
| 0.6.0 | 893 | 8/9/2021 |
| 0.5.0 | 1,006 | 7/8/2021 |
| 0.4.0 | 1,170 | 4/13/2021 |
| 0.3.1 | 835 | 4/13/2021 |
| 0.2.1 | 849 | 4/9/2021 |
| 0.2.0 | 834 | 4/6/2021 |
| 0.1.0 | 1,176 | 3/17/2021 |