Notification Broker Topology
Summary
One durable topic exchange, one durable queue and 42 exact-match bindings, all declared by the consumer at connection time. Dead-letter names are configured but the queue is declared without them.
Audience
DevOps engineers, engineers, architects, QA, support and security reviewers.
Broker topology
Exchange
Declared by the consumer as a topic exchange, durable and not auto-deleted. The name comes from the shared broker options and defaults to the platform integration-events exchange. Declaration is idempotent, so the consumer can declare it safely whether or not a publisher already has.
The same exchange is used by the shared event bus for publishing, so one exchange carries the platform's integration traffic.
Queue
Declared as durable, non-exclusive and not auto-deleted, with the name taken from the Notification configuration section and defaulting to a service-specific queue name.
Critically, it is declared with no arguments. That is the mechanism by which dead-letter routing, message time-to-live, maximum length and queue type would be set — none are.
Bindings
The consumer iterates the resolver's supported event types and creates one binding per type, using the event type string as the routing key. That produces 42 bindings.
Although the exchange is a topic exchange, every binding is an exact string — no wildcard patterns are used — so routing behaves like a direct exchange today. Adding a supported event type requires a resolver entry, and the binding follows automatically on the next connection.
Prefetch
Quality of service is set with a configurable prefetch count defaulting to 5, applied per consumer rather than globally. Automatic acknowledgement is disabled, so the broker withholds acknowledgement until the service acknowledges explicitly.
Prefetch above one is what allows concurrent in-flight deliveries; see ordering.
Connection resilience
The connection factory enables automatic recovery with a fixed network recovery interval. Above that, the hosted service wraps connection establishment in an indefinite loop that logs a warning and retries after a fixed delay when the broker is unreachable, so an unavailable broker never crashes startup.
On shutdown the channel and connection are disposed after the base stop completes.
Dead-letter configuration
The Notification options declare a dead-letter exchange name and a dead-letter queue name. Neither is referenced anywhere else in the service. See dead-letter processing.
Scope boundary
Everything above is what the repository declares. The deployed broker may have additional exchanges, queues, policies, mirroring or operator-defined dead-letter policies applied out of band. This documentation asserts nothing about infrastructure outside the repository.
Classification
Transitional — declaration is Implemented; dead-letter topology is Not implemented in code.
Requires confirmation
The deployed broker topology, including any operator-applied policies, requires confirmation.
Related Articles
See Also
Keywords
- Notification database
- Broker Topology
- Draft database documentation
Source References
microservices/src/notification-service/Messaging/NotificationEventConsumer.csmicroservices/src/shared-kernel/Messaging/RabbitMqOptions.csmicroservices/src/notification-service/Application/NotificationOptions.csmicroservices/src/shared-kernel/Messaging/RabbitMqEventBus.cs
Revision Information
- Status: Draft
- Last reviewed: 2026-07-21
- Review cycle: Quarterly