Skip to main content

Messaging Backbone

RabbitMQ carries asynchronous domain, projection, audit, notification, subscription, and worker messages. Shared publishing and consuming foundations are Implemented; fleet-wide outbox adoption, reconnect hardening, schema governance, and reconciliation are Partially implemented.

StreamProducersConsumersPurpose
policy.*Policy ServiceAuthorization projection, audit, notificationsGrant lifecycle and invalidation
org.member.*User ServiceAuthorization projection, auditOrganisation graph changes
group.member.*Planned producerAuthorization projectionGroup graph changes — Planned
Audit eventsAll business servicesAudit ServiceAppend-only activity history
Notification eventsBusiness servicesNotification ServiceTemplate-based delivery
Ingestion/subscription eventsData producers/servicesData-plane consumersData movement and fan-out
File-job eventsFile ServiceFile workersAsynchronous processing

Delivery contract

Critical producers persist the business change and outbox record in one database transaction. Dispatch uses publisher confirms and stable event IDs. Consumers acknowledge only after their durable side effect, deduplicate by identity/version, retry transient failures with bounded backoff, and route terminal failures to a dead-letter queue.

At-least-once delivery does not guarantee source/projection equality forever. Security projections and business-critical derived state require lag metrics, replay procedures, and periodic reconciliation. Broker unavailability must not erase a committed change; consumer reconnect exhaustion and a non-empty security DLQ are operator alerts.

See Event-Driven Integrations and Audit Event Delivery.