Skip to main content

Installation

Prerequisites

  • .NET 7.0, 8.0, or 9.0
  • Microsoft.Extensions.DependencyInjection (already included transitively)

Core Package

Install the core package to get started:

dotnet add package Vali-Mediator

Or via PackageReference in your .csproj:

<PackageReference Include="Vali-Mediator" Version="2.0.0" />

Extension Packages

Install only the packages you need:

# ASP.NET Core integration (Result → HTTP responses)
dotnet add package Vali-Mediator.AspNetCore

# Resilience policies (Retry, Circuit Breaker, Timeout, etc.)
dotnet add package Vali-Mediator.Resilience

# Pipeline caching
dotnet add package Vali-Mediator.Caching

# OpenTelemetry-compatible observability
dotnet add package Vali-Mediator.Observability

# Idempotent request deduplication
dotnet add package Vali-Mediator.Idempotency

Or via PackageReference:

<ItemGroup>
<PackageReference Include="Vali-Mediator" Version="2.0.0" />
<PackageReference Include="Vali-Mediator.AspNetCore" Version="2.0.0" />
<PackageReference Include="Vali-Mediator.Resilience" Version="2.0.0" />
<PackageReference Include="Vali-Mediator.Caching" Version="2.0.0" />
<PackageReference Include="Vali-Mediator.Observability" Version="2.0.0" />
<PackageReference Include="Vali-Mediator.Idempotency" Version="2.0.0" />
</ItemGroup>

Basic Setup

Register Vali-Mediator in your DI container:

// Program.cs
builder.Services.AddValiMediator(config =>
{
// Scan the assembly containing Program for handlers, processors, etc.
config.RegisterServicesFromAssemblyContaining<Program>();
});

That's it — Vali-Mediator will automatically discover all handlers, pre/post processors, and register them.

Full Setup (All Packages)

builder.Services.AddValiMediator(config =>
{
config.RegisterServicesFromAssemblyContaining<Program>();

// Add behaviors (first registered = outermost in pipeline)
config.AddCachingBehavior();
config.AddObservabilityBehavior();
config.AddIdempotencyBehavior();
config.AddResilienceBehavior();
});

// Register stores
builder.Services.AddInMemoryCacheStore();
builder.Services.AddInMemoryIdempotencyStore();

// Observability
builder.Services.AddObservability();

// Timeout behavior (IHasTimeout support)
builder.Services.AddTimeoutBehavior();

// Dead letter queue for failed ResilientParallel notifications
builder.Services.AddInMemoryDeadLetterQueue();
tip

For production use, replace in-memory stores with distributed implementations (Redis, SQL Server, etc.).