Search Results for


    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

    • Home (README)
    • Complete Guide

    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

    • Edit this page
    In this article
    Back to top Copyright © 2026