Repository navigation
ConduitR 1.0.2
✨ Highlights
-
Performance: cached Send/Stream pipelines per
(TRequest,TResponse)→ avoids reflection and delegate recomposition on the hot path. -
Publish strategies: choose how notifications run
Parallel(default),Sequential,StopOnFirstException.
-
New package — ConduitR.Processing: MediatR-style pre/post processors as pipeline behaviors.
-
New package — ConduitR.Resilience.Polly: retry, per-attempt timeout (pessimistic), and circuit-breaker.
-
Hot-path polish: tighter wrappers (no LINQ, fewer allocations), lean publish path.
-
Docs: added guides for performance, processing, and resilience.
📦 Packages
ConduitR1.0.2ConduitR.Abstractions1.0.2ConduitR.DependencyInjection1.0.2ConduitR.AspNetCore1.0.2ConduitR.Validation.FluentValidation1.0.2- New:
ConduitR.Processing1.0.2 - New:
ConduitR.Resilience.Polly1.0.2 (depends on Polly 7.x)
🚀 Usage snippets
Publish strategy
using ConduitR.DependencyInjection;
services.AddConduit(cfg =>
{
cfg.PublishStrategy = PublishStrategy.Sequential; // or StopOnFirstException
cfg.AddHandlersFromAssemblies(typeof(Program).Assembly);
});Pre/Post processing
using ConduitR.Processing;
services.AddConduitProcessing(typeof(Program).Assembly);
public sealed class AuditPre : IRequestPreProcessor<CreateOrder>
{
public Task Process(CreateOrder req, CancellationToken ct) { /* audit */ return Task.CompletedTask; }
}
public sealed class MetricsPost : IRequestPostProcessor<CreateOrder, CreateOrderResult>
{
public Task Process(CreateOrder req, CreateOrderResult res, CancellationToken ct) { /* metrics */ return Task.CompletedTask; }
}Resilience (Polly)
using ConduitR.Resilience.Polly;
services.AddConduitResiliencePolly(o =>
{
o.RetryCount = 3; // exponential backoff
o.Timeout = TimeSpan.FromSeconds(1); // per-attempt timeout (pessimistic)
o.CircuitBreakerEnabled = true;
o.CircuitBreakerFailures = 5;
o.CircuitBreakerDuration = TimeSpan.FromSeconds(30);
});⚠️ Breaking changes
None. This release is drop-in compatible.
🔧 Upgrade notes
- Optional: add
ConduitR.Processingand/orConduitR.Resilience.Pollyto your app’s DI (see snippets above). - CI users: ensure your workflow packs the two new projects (see step 1).
📚 Docs
docs/perf-pipeline-cache.mddocs/processing.mddocs/resilience-polly.md