Chatter.NET 10

Same handlers. Any broker.

Chatter lets the same Command and Event handlers serve in-process dispatch and cross-service messaging over Azure Service Bus, RabbitMQ or SQL Server Service Broker.

View on GitHub dotnet add package Chatter.CQRS
  1. Chatter.CQRSDispatches Commands, Queries and Events in-process through the Message Dispatcher and a composable Command Pipeline.
    NuGet
  2. Chatter.MessageBrokersBrokered Message Receivers, sending and routing, Inbox/Outbox reliability and Recovery: Retry, Circuit Breaker, Error Queue.
    NuGet
  3. Chatter.MessageBrokers.AzureServiceBusAzure Service Bus transport: queue receivers, topic subscriptions, sessions and cross-entity transactions.
    NuGet
  4. Chatter.MessageBrokers.AzureServiceBus.AuthMicrosoft Entra ID token authentication for the Azure Service Bus transport, including managed identity.
    NuGet
  5. Chatter.MessageBrokers.RabbitMQRabbitMQ transport over externally provisioned exchanges and queues.
    NuGet
  6. Chatter.MessageBrokers.SqlServiceBrokerSQL Server Service Broker transport over Service Broker conversations and queues you provision.
    NuGet
  7. Chatter.MessageBrokers.Reliability.EntityFrameworkEF Core Inbox, Outbox and Unit of Work, stored in your own DbContext.
    NuGet
  8. Chatter.MessageBrokers.Reliability.CosmosAzure Cosmos DB Document Tier, Standalone Inbox Gate and change-feed Outbox Relay.
    NuGet
  9. Chatter.SqlChangeFeedWatched SQL Server table changes delivered as RowInsertedEvent, RowUpdatedEvent and RowDeletedEvent over SQL Server Service Broker.
    NuGet
One PlaceOrder handler, reached through every Chatter package A PlaceOrderHandler is reached in-process, then across services from a Storefront to an Orders service. Messages arrive over Azure Service Bus, RabbitMQ and SQL Server Service Broker, with Inbox and Outbox reliability, Recovery and a SQL change feed. Commands are checked against an Inbox in a Reliability.EntityFramework Receiver, and a duplicate delivery is skipped. Each message labelled with a package name checks that package off in the list beside the stage. The final frame shows the same handler behind all three transports and all 9 packages checked.

One handler follows a message through every feature, and each package is checked off as it is used.