📄️ Overview
RCommon's messaging layer sits on top of the event handling infrastructure and provides transport-backed, cross-service message delivery. It reuses the same ISubscriber interface as in-process event handling, so handler code is portable across transports.
📄️ Transactional Outbox
The transactional outbox pattern guarantees that events are published to a message broker if and only if the database transaction that triggered them commits. RCommon provides outbox integration for both MassTransit and Wolverine.
📄️ State Machines
RCommon provides a lightweight state machine abstraction that can be backed by either the Stateless library or a MassTransit-compatible dictionary-based implementation. The MassTransit adapter (RCommon.MassTransit.StateMachines) integrates with the RCommon builder pipeline and is appropriate for orchestrating multi-step workflows in messaging scenarios.
📄️ MassTransit
RCommon integrates with MassTransit to deliver events to consumers across service boundaries. The integration registers MassTransitEventHandler as a MassTransit IConsumer that delegates to the application's ISubscriber. Handler code has no dependency on MassTransit types.
📄️ Wolverine
RCommon integrates with Wolverine to deliver events both in-process and across service boundaries. The integration registers WolverineEventHandler as a Wolverine IWolverineHandler that delegates to the application's ISubscriber. Handler code has no dependency on Wolverine types.