title: Chapar – The Persian Courier for .NET Messaging
🐎 Chapar
The Clean, Extensible, and Business‑Friendly Messaging Abstraction for .NET
dotnet add package Chapar
dotnet add package Chapar.MassTransit
Why Chapar?
- Zero ceremony — PublishAsync and SendAsync are all you need.
- Transparent Outbox / Inbox — Add one NuGet package and every message is automatically stored in the database before delivery. No code changes.
- Pipeline — A chain of configurable behaviours (diagnostics, error handling, origin validation, …) that wrap every handler.
- Framework agnostic — Works standalone or on top of Zamin.
- Transport agnostic — Currently uses MassTransit v8 (free & community‑supported), with Wolverine coming soon.
Inspired by the ancient Persian courier system – fast, reliable, and invisible to the message sender.
Quick Start
// 1. Define a message
public record UserRegistered(Guid UserId, string Email) : IEvent;
// 2. Publish
var bus = provider.GetRequiredServiceIChaparBus();
await bus.PublishAsync(new UserRegistered(Guid.NewGuid(), "user@example.com"));
// 3. Handle
public class UserRegisteredHandler : IMessageHandlerUserRegistered
{
public Task HandleAsync(UserRegistered message, CancellationToken ct)
{
Console.WriteLine($"User {message.Email} registered.");
return Task.CompletedTask;
}
}
Explore the Documentation
| Section | Description |
|---|---|
| Complete Guide | Walk through every scenario from publish/subscribe to advanced Outbox/Inbox, Pipeline, and Zamin integration. |
| GitHub Repository | Source code, issue tracker, and contribution guidelines. |
API Reference (Generated Automatically)
Welcome to the complete API reference for Chapar.
Below you can find every namespace documented in the library.
Documentation
Chapar.Core
- Chapar.Core.Abstractions.AggregateRoot
- Chapar.Core.Abstractions.IAggregateRoot
- Chapar.Core.Abstractions.IChaparBus
- Chapar.Core.Abstractions.IChaparDbContext
- Chapar.Core.Abstractions.IChaparRequestClient-2
- Chapar.Core.Abstractions.ICommand
- Chapar.Core.Abstractions.IConsumeFilter
- Chapar.Core.Abstractions.IDomainEvent
- Chapar.Core.Abstractions.IEvent
- Chapar.Core.Abstractions.IIntegrationEvent
- Chapar.Core.Abstractions.IMessage
- Chapar.Core.Abstractions.IMessageContextAccessor
- Chapar.Core.Abstractions.IMessageHandler-1
- Chapar.Core.Abstractions
- Chapar.Core.Attributes.AllowedOriginAttribute
- Chapar.Core.Attributes.ExchangeAttribute
- Chapar.Core.Attributes.ExchangeType
- Chapar.Core.Attributes.QueueNameAttribute
- Chapar.Core.Attributes
- Chapar.Core.Cleanup.CleanupOptions
- Chapar.Core.Cleanup.ICleanupStore
- Chapar.Core.Cleanup
- Chapar.Core.Exceptions.IDomainException
- Chapar.Core.Exceptions.OriginValidationException
- Chapar.Core.Exceptions
- Chapar.Core.Inbox.IInboxStore
- Chapar.Core.Inbox.InboxMessage
- Chapar.Core.Inbox
- Chapar.Core.Messages.ParcelMessage
- Chapar.Core.Messages
- Chapar.Core.Metrics.IInboxMetrics
- Chapar.Core.Metrics.IOutboxMetrics
- Chapar.Core.Metrics
- Chapar.Core.Outbox.IOutboxStore
- Chapar.Core.Outbox.OutboxMessage
- Chapar.Core.Outbox
- Chapar.Core.Pipeline.IPipelineBehavior-1
- Chapar.Core.Pipeline
- Chapar.Core.Utilities.ChaparVersion
- Chapar.Core.Utilities.HeaderSanitizer
- Chapar.Core.Utilities
Chapar.Inbox
- Chapar.Inbox.EntityFrameworkCore.Extensions.ChaparInboxExtensions
- Chapar.Inbox.EntityFrameworkCore.Extensions
- Chapar.Inbox.EntityFrameworkCore.Options.ChaparInboxOptions
- Chapar.Inbox.EntityFrameworkCore.Options
- Chapar.Inbox.EntityFrameworkCore.Stores.EfInboxStore
- Chapar.Inbox.EntityFrameworkCore.Stores.InboxMessageEntity
- Chapar.Inbox.EntityFrameworkCore.Stores
Chapar.MassTransit
- Chapar.MassTransit.Adapters.MessageHeaders
- Chapar.MassTransit.Adapters
- Chapar.MassTransit.Consumers.ChaparConsumerAdapter-1
- Chapar.MassTransit.Consumers
- Chapar.MassTransit.Extensions.ChaparMassTransitExtensions
- Chapar.MassTransit.Extensions.ChaparMassTransitHealthCheckExtensions
- Chapar.MassTransit.Extensions
- Chapar.MassTransit.Options.ChaparMassTransitOptions
- Chapar.MassTransit.Options.ExchangeConfig
- Chapar.MassTransit.Options.ResilienceOptions
- Chapar.MassTransit.Options
Chapar.Outbox
- Chapar.Outbox.EntityFrameworkCore.Extensions.ChaparOutboxExtensions
- Chapar.Outbox.EntityFrameworkCore.Extensions
- Chapar.Outbox.EntityFrameworkCore.Interceptors.OutboxInterceptor
- Chapar.Outbox.EntityFrameworkCore.Interceptors
- Chapar.Outbox.EntityFrameworkCore.Options.ChaparOutboxOptions
- Chapar.Outbox.EntityFrameworkCore.Options
- Chapar.Outbox.EntityFrameworkCore.Stores.EfOutboxStore
- Chapar.Outbox.EntityFrameworkCore.Stores.OutboxMessageEntity
- Chapar.Outbox.EntityFrameworkCore.Stores
Chapar.Pipeline
- Chapar.Pipeline.Behaviours.DiagnosticsBehaviour-1
- Chapar.Pipeline.Behaviours.DomainExceptionHandlingBehaviour-1
- Chapar.Pipeline.Behaviours.ErrorHandlingBehaviour-1
- Chapar.Pipeline.Behaviours.OriginValidationBehaviour-1
- Chapar.Pipeline.Behaviours
- Chapar.Pipeline.Extensions.ChaparPipelineExtensions
- Chapar.Pipeline.Extensions
Chapar.Zamin
- Chapar.Zamin.Consumer.ChaparMessageConsumer
- Chapar.Zamin.Consumer
- Chapar.Zamin.Extensions.ChaparZaminExtensions
- Chapar.Zamin.Extensions
- Chapar.Zamin.MassTransit.Extensions.ChaparZaminMassTransitExtensions
- Chapar.Zamin.MassTransit.Extensions
- Chapar.Zamin.Outbox.Extensions.ChaparZaminOutboxExtensions
- Chapar.Zamin.Outbox.Extensions
- Chapar.Zamin.Outbox.Inbox
- Chapar.Zamin.Outbox.Inbox.ZaminInboxStore
- Chapar.Zamin.Outbox.Outbox
- Chapar.Zamin.Outbox.Outbox.ZaminOutboxStore
- Chapar.Zamin.SendMessageBus
- Chapar.Zamin.SendMessageBus.ZaminChaparSendMessageBus
License
MIT