How ukejejoseph/enterprise-dotnet-messaging works
Chatter is a set of .NET libraries for in-process CQRS and brokered messaging. The principal workflow dispatches an application command to a handler, which may publish or send messages through the broker abstraction; a receiving service routes broker messages to its existing handlers. The README also documents query/event dispatch, recovery, durable Inbox/Outbox providers, and SQL change-feed notifications. The wiring of several unsampled subsystems is based on that documentation; uncertain implementation-level links are omitted.
Main entry points: MessageDispatcher.cs Message Dispatcher · CqrsExtensions.cs Handler Registration · BrokeredMessageReceiver.cs Broker Receiver · QueryDispatcher.cs Query Dispatcher
Components 25
In-process CQRS
- Message Dispatcher
src/Chatter.CQRS/src/Chatter.CQRS/MessageDispatcher.cs - Command Pipeline
src/Chatter.CQRS/src/Chatter.CQRS/Pipeline/CommandBehaviorPipeline.cs - Query Dispatcher
src/Chatter.CQRS/src/Chatter.CQRS/Queries/QueryDispatcher.cs - Event Dispatcher
src/Chatter.CQRS/src/Chatter.CQRS/Events/EventDispatcher.cs - Handler Registration
src/Chatter.CQRS/src/Chatter.CQRS/DependencyInjection/CqrsExtensions.cs - Handler Context
src/Chatter.CQRS/src/Chatter.CQRS/Context/MessageHandlerContext.cs - Opt-in Diagnostics
src/Chatter.CQRS/src/Chatter.CQRS/Diagnostics/ChatterDiagnostics.cs
Brokered Messaging
- Context Send/Publish
src/Chatter.MessageBrokers/src/Chatter.MessageBrokers/Context/MessageHandlerContextExtensions.cs - External Dispatcher
src/Chatter.CQRS/src/Chatter.CQRS/IExternalDispatcher.cs - Broker Router
src/Chatter.MessageBrokers/src/Chatter.MessageBrokers/Routing - Infrastructure Dispatch
src/Chatter.MessageBrokers/src/Chatter.MessageBrokers/MessagingInfrastructure.cs - Broker Receiver
src/Chatter.MessageBrokers/src/Chatter.MessageBrokers/Receiving/BrokeredMessageReceiver.cs
Transport Adapters
- Azure Service Bus
src/Chatter.MessageBrokers.AzureServiceBus/src/Chatter.MessageBrokers.AzureServiceBus/Receiving/ServiceBusReceiver.cs - RabbitMQ
src/Chatter.MessageBrokers.RabbitMQ/src/Chatter.MessageBrokers.RabbitMQ/Receiving/RabbitMqReceiver.cs - SQL Service Broker
src/Chatter.MessageBrokers.SqlServiceBroker/src/Chatter.MessageBrokers.SqlServiceBroker/Receiving/SqlServiceBrokerReceiver.cs
Durable Reliability
- EF Inbox/Outbox
src/Chatter.MessageBrokers.Reliability.EntityFramework/src/Chatter.MessageBrokers.Reliability.EntityFramework - Cosmos Inbox/Outbox
src/Chatter.MessageBrokers.Reliability.Cosmos/src/Chatter.MessageBrokers.Reliability.Cosmos/Reliability
Change Feed
- SQL Change Feed
src/Chatter.SqlChangeFeed/src/Chatter.SqlChangeFeed/SqlDependencyManager.cs
Other components
- Application Caller
- Application Handler
- Message Broker
- Error Queue
- Relational Store
- Cosmos DB
- SQL Server
Connections 25
- Application Caller → Message Dispatcher: dispatches command
- Message Dispatcher → Command Pipeline: runs command
- Command Pipeline → Application Handler: invokes handler
- Application Caller → Query Dispatcher: submits query
- Query Dispatcher → Application Handler: invokes query handler
- Application Caller → Event Dispatcher: dispatches event
- Event Dispatcher → Application Handler: fans out
- Handler Registration → Message Dispatcher: registers services
- Handler Registration → Query Dispatcher: registers services
- Handler Registration → Event Dispatcher: registers services
- Application Handler → Handler Context: uses context
- Handler Context → Context Send/Publish: sends or publishes
- Context Send/Publish → External Dispatcher: dispatches externally
- External Dispatcher → Broker Router: routes message
- Broker Router → Infrastructure Dispatch: dispatches to transport
- Azure Service Bus → Message Broker: receives or sends
- RabbitMQ → Message Broker: receives or sends
- SQL Service Broker → Message Broker: receives or sends
- Message Broker → Broker Receiver: delivers message
- Broker Receiver → Message Dispatcher: dispatches received message
- Broker Receiver → Error Queue: exceeds receive attempts
- EF Inbox/Outbox → Relational Store: stores inbox/outbox
- Cosmos Inbox/Outbox → Cosmos DB: stores and relays
- SQL Change Feed → SQL Server: installs feed objects
- Opt-in Diagnostics → Message Dispatcher: emits opt-in telemetry