Amanhecer 2.0.0
dotnet add package Amanhecer --version 2.0.0
NuGet\Install-Package Amanhecer -Version 2.0.0
<PackageReference Include="Amanhecer" Version="2.0.0" />
<PackageVersion Include="Amanhecer" Version="2.0.0" />
<PackageReference Include="Amanhecer" />
paket add Amanhecer --version 2.0.0
#r "nuget: Amanhecer, 2.0.0"
#:package Amanhecer@2.0.0
#addin nuget:?package=Amanhecer&version=2.0.0
#tool nuget:?package=Amanhecer&version=2.0.0
Amanhecer
A lightweight request dispatcher (mediator) for .NET. Send commands, publish events and execute queries through configurable middleware pipelines — with no external broker required.
Quick start
Define a request and its handler:
using Amanhecer.Abstractions;
public record Greeting(string Name);
public class GreetingHandler : RequestHandler<Greeting>
{
public override ValueTask HandleAsync(Greeting request, AmanhecerContext context,
CancellationToken cancellationToken = default)
{
Console.WriteLine($"Hello {request.Name}!");
return ValueTask.CompletedTask;
}
}
Register Amanhecer and dispatch:
using Amanhecer.Abstractions;
using Amanhecer.Extensions;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection()
.AddAmanhecer(a => a
.AddRequestHandler<GreetingHandler>()
.AddQueryHandler<AskHandler>())
.BuildServiceProvider();
var dispatcher = services.GetRequiredService<IDispatcher>();
dispatcher.Send(new Greeting("world")); // one handler
dispatcher.Publish(new OrderShipped(id)); // any number of handlers
var answer = dispatcher.Query<Ask, string>(new Ask("?")); // returns a response
All operations have async overloads (SendAsync, PublishAsync, QueryAsync, PostAsync) and accept an optional AmanhecerContext carrying a routing-key override, metadata, an Activity and a per-dispatch executing strategy.
Features
- Send / Publish / Query — dispatch a command to a single handler, an event to any number of handlers, or a query that returns a response.
- Middleware pipelines — wrap handlers with cross-cutting concerns (logging, validation, retries) configured fluently or via attributes.
- Routing keys — route requests to pipelines by convention (type name) or explicitly with
[RoutingKey]. - Executing strategies — run published pipelines sequentially or in parallel.
- DI-first — built on
Microsoft.Extensions.DependencyInjection; everything is resolved from the container. - Multi-targeting —
net462,netstandard2.0,net8.0,net9.0andnet10.0, AOT-compatible on modern targets.
Companion packages
Amanhecer.RabbitMq— RabbitMQ transport for the messaging gateway (publications, subscriptions, provisioning).Amanhecer.Extensions.Hosting— generic-host integration that runs the message consumers as a hosted service.Amanhecer.Polly— execute pipelines inside named Polly resilience pipelines.Amanhecer.Extensions.Resilience— the same, built onMicrosoft.Extensions.Resiliencewith telemetry enrichment.Amanhecer.OpenTelemetry— OpenTelemetry tracing and metrics instrumentation.
Documentation
Full documentation lives in the repository docs: middleware, transformers, routing, RabbitMQ, executing strategies, resilience and observability.
Licence
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- Amanhecer.Abstractions (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- System.Collections.Immutable (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
.NETStandard 2.0
- Amanhecer.Abstractions (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- System.Collections.Immutable (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
net10.0
- Amanhecer.Abstractions (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
-
net8.0
- Amanhecer.Abstractions (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
-
net9.0
- Amanhecer.Abstractions (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.20)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Amanhecer:
| Package | Downloads |
|---|---|
|
Amanhecer.RabbitMq
RabbitMQ transport for Amanhecer: publish messages to exchanges and consume them from queues through the messaging gateway, with CloudEvents mapping and pluggable provisioning. |
|
|
Amanhecer.Extensions.Hosting
Generic-host integration for Amanhecer: runs the messaging gateway consumers as a hosted service alongside the host. |
|
|
Amanhecer.InMemory
In-memory transport for Amanhecer: publish messages to channel-backed queues and consume them through the messaging gateway, with CloudEvents mapping and pluggable queue provisioning. |
|
|
Amanhecer.Dekaf
Kafka transport for Amanhecer (Dekaf): publish messages to topics and consume them through the messaging gateway, with CloudEvents mapping and pluggable provisioning. |
|
|
Amanhecer.ConfluentKafka
Kafka transport for Amanhecer (Confluent.Kafka): publish messages to topics and consume them through the messaging gateway, with CloudEvents mapping and pluggable provisioning. |
GitHub repositories
This package is not used by any popular GitHub repositories.