# alifcapital/eventbus.rabbitmq architecture

> Architecture diagram of the GitHub repository alifcapital/eventbus.rabbitmq, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alifcapital/eventbus.rabbitmq
- Repository: https://github.com/alifcapital/eventbus.rabbitmq

## Overview

EventBus.RabbitMQ is a .NET library that routes application events through RabbitMQ, with publishing and receiving configured through dependency injection and support for multiple virtual hosts. The main workflow is an application publishing an event through the publisher manager, which serializes and sends it to RabbitMQ; subscriber consumers receive messages and invoke registered handlers. The library also supports collected publishing, outbox/inbox integration, configuration-based discovery, and tracing. The graph reflects README-documented capabilities and relationships visible in sampled source; several subsystem implementations are indexed but not excerpted.

Main entry points: [`src/Publishers/Managers/EventPublisherManager.cs`](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/EventPublisherManager.cs) (Publisher Manager), [`src/Subscribers/Consumers/EventConsumerService.cs`](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerService.cs) (Event Consumer), [`src/Extensions/RabbitMqExtensions.cs`](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Extensions/RabbitMqExtensions.cs) (DI Registration), [`src/Subscribers/Managers/EventSubscriberCollector.cs`](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Managers/EventSubscriberCollector.cs) (Subscriber Collector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Configuration and Registration"]
  node_registration["DI Registration"]
  node_settings["Host Settings"]
  node_configprovider["Bus Configuration"]
  node_background["Startup Services"]
end

subgraph group_publish["Event Publishing"]
  node_pubmanager["Publisher Manager"]
  node_pubcollector["Publisher Collector"]
  node_outboxmanager["Outbox Manager"]
  node_messagepublisher["Broker Publisher"]
end

subgraph group_consume["Event Consumption"]
  node_subscriberregistry["Subscriber Collector"]
  node_consumercreator["Consumer Creator"]
  node_consumer["Event Consumer"]
  node_handler["Application Handlers"]
end

subgraph group_transport["RabbitMQ Transport"]
  node_connectionmanager["Connection Manager"]
  node_connection["RabbitMQ Connection"]
end

subgraph group_crosscut["Storage and Telemetry"]
  node_inbox[("Inbox Storage")]
  node_tracing["Trace Instrumentation"]
end

node_app(("Application"))
node_rabbit["RabbitMQ Broker"]

node_app -->|"registers services"| node_registration
node_registration -->|"binds settings"| node_settings
node_registration -->|"registers provider"| node_configprovider
node_app -->|"publishes events"| node_pubmanager
node_pubmanager -->|"resolves settings"| node_pubcollector
node_pubmanager -->|"publishes message"| node_rabbit
node_pubmanager -.->|"uses outbox mode"| node_outboxmanager
node_pubmanager -.->|"publishes via adapter"| node_messagepublisher
node_registration -->|"registers subscribers"| node_subscriberregistry
node_subscriberregistry -->|"creates consumers"| node_consumercreator
node_consumercreator -->|"creates service"| node_consumer
node_consumer -->|"consumes messages"| node_rabbit
node_consumer -->|"invokes handlers"| node_handler
node_consumer -->|"stores events"| node_inbox
node_consumer -->|"creates activities"| node_tracing
node_pubmanager -->|"creates activities"| node_tracing
node_connectionmanager -->|"creates connection"| node_connection
node_consumer -.->|"gets connection"| node_connectionmanager
node_background -->|"starts consumers"| node_subscriberregistry
node_background -->|"starts publishing"| node_pubcollector
node_configprovider -->|"reports publishers"| node_pubcollector
node_configprovider -->|"reports subscribers"| node_subscriberregistry
node_connection -.->|"connects to broker"| node_rabbit

click node_registration "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Extensions/RabbitMqExtensions.cs"
click node_settings "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Configurations/RabbitMqHostSettings.cs"
click node_configprovider "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Information/EventBusConfigurationProvider.cs"
click node_pubmanager "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/EventPublisherManager.cs"
click node_pubcollector "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/EventPublisherCollector.cs"
click node_outboxmanager "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/OutboxEventPublisherManager.cs"
click node_messagepublisher "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Messaging/MessageBrokerEventPublisher.cs"
click node_subscriberregistry "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Managers/EventSubscriberCollector.cs"
click node_consumercreator "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerServiceCreator.cs"
click node_consumer "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerService.cs"
click node_handler "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Models/IEventSubscriber.cs"
click node_connectionmanager "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Connections/RabbitMqConnectionManager.cs"
click node_connection "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Connections/RabbitMqConnection.cs"
click node_background "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/BackgroundServices/StartEventBusServices.cs"
click node_inbox "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerService.cs"
click node_tracing "https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Instrumentation/Trace/EventBusTraceInstrumentation.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_registration,node_settings,node_configprovider,node_background toneBlue
class node_pubmanager,node_pubcollector,node_outboxmanager,node_messagepublisher toneAmber
class node_subscriberregistry,node_consumercreator,node_consumer,node_handler toneMint
class node_connectionmanager,node_connection toneRose
class node_inbox,node_tracing,node_app,node_rabbit toneIndigo
```

## Components

### Configuration and Registration

- [DI Registration](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Extensions/RabbitMqExtensions.cs): `src/Extensions/RabbitMqExtensions.cs`
- [Host Settings](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Configurations/RabbitMqHostSettings.cs): `src/Configurations/RabbitMqHostSettings.cs`
- [Bus Configuration](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Information/EventBusConfigurationProvider.cs): `src/Information/EventBusConfigurationProvider.cs`
- [Startup Services](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/BackgroundServices/StartEventBusServices.cs): `src/BackgroundServices/StartEventBusServices.cs`

### Event Publishing

- [Publisher Manager](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/EventPublisherManager.cs): `src/Publishers/Managers/EventPublisherManager.cs`
- [Publisher Collector](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/EventPublisherCollector.cs): `src/Publishers/Managers/EventPublisherCollector.cs`
- [Outbox Manager](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Managers/OutboxEventPublisherManager.cs): `src/Publishers/Managers/OutboxEventPublisherManager.cs`
- [Broker Publisher](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Publishers/Messaging/MessageBrokerEventPublisher.cs): `src/Publishers/Messaging/MessageBrokerEventPublisher.cs`

### Event Consumption

- [Subscriber Collector](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Managers/EventSubscriberCollector.cs): `src/Subscribers/Managers/EventSubscriberCollector.cs`
- [Consumer Creator](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerServiceCreator.cs): `src/Subscribers/Consumers/EventConsumerServiceCreator.cs`
- [Event Consumer](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerService.cs): `src/Subscribers/Consumers/EventConsumerService.cs`
- [Application Handlers](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Models/IEventSubscriber.cs): `src/Subscribers/Models/IEventSubscriber.cs`

### RabbitMQ Transport

- [Connection Manager](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Connections/RabbitMqConnectionManager.cs): `src/Connections/RabbitMqConnectionManager.cs`
- [RabbitMQ Connection](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Connections/RabbitMqConnection.cs): `src/Connections/RabbitMqConnection.cs`

### Storage and Telemetry

- [Inbox Storage](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Subscribers/Consumers/EventConsumerService.cs): `src/Subscribers/Consumers/EventConsumerService.cs`
- [Trace Instrumentation](https://github.com/alifcapital/eventbus.rabbitmq/blob/main/src/Instrumentation/Trace/EventBusTraceInstrumentation.cs): `src/Instrumentation/Trace/EventBusTraceInstrumentation.cs`

### Other components

- **Application**
- **RabbitMQ Broker**

## Connections

- Application → DI Registration: registers services
- DI Registration → Host Settings: binds settings (evidence: `src/Extensions/RabbitMqExtensions.cs`)
- DI Registration → Bus Configuration: registers provider (evidence: `src/Extensions/RabbitMqExtensions.cs`)
- Application → Publisher Manager: publishes events
- Publisher Manager → Publisher Collector: resolves settings (evidence: `src/Publishers/Managers/EventPublisherManager.cs`)
- Publisher Manager → RabbitMQ Broker: publishes message (evidence: `src/Publishers/Managers/EventPublisherManager.cs`)
- Publisher Manager → Outbox Manager: uses outbox mode
- Publisher Manager → Broker Publisher: publishes via adapter
- DI Registration → Subscriber Collector: registers subscribers (evidence: `src/Extensions/RabbitMqExtensions.cs`)
- Subscriber Collector → Consumer Creator: creates consumers (evidence: `src/Subscribers/Managers/EventSubscriberCollector.cs`)
- Consumer Creator → Event Consumer: creates service (evidence: `src/Subscribers/Consumers/EventConsumerServiceCreator.cs`)
- Event Consumer → RabbitMQ Broker: consumes messages (evidence: `src/Subscribers/Consumers/EventConsumerService.cs`)
- Event Consumer → Application Handlers: invokes handlers (evidence: `src/Subscribers/Consumers/EventConsumerService.cs`)
- Event Consumer → Inbox Storage: stores events (evidence: `src/Subscribers/Consumers/EventConsumerService.cs`)
- Event Consumer → Trace Instrumentation: creates activities (evidence: `src/Subscribers/Consumers/EventConsumerService.cs`)
- Publisher Manager → Trace Instrumentation: creates activities (evidence: `src/Publishers/Managers/EventPublisherManager.cs`)
- Connection Manager → RabbitMQ Connection: creates connection (evidence: `src/Connections/RabbitMqConnectionManager.cs`)
- Event Consumer → Connection Manager: gets connection
- Startup Services → Subscriber Collector: starts consumers (evidence: `src/BackgroundServices/StartEventBusServices.cs`)
- Startup Services → Publisher Collector: starts publishing (evidence: `src/BackgroundServices/StartEventBusServices.cs`)
- Bus Configuration → Publisher Collector: reports publishers (evidence: `src/Information/EventBusConfigurationProvider.cs`)
- Bus Configuration → Subscriber Collector: reports subscribers (evidence: `src/Information/EventBusConfigurationProvider.cs`)
- RabbitMQ Connection → RabbitMQ Broker: connects to broker
