Event Bus Port¶
event_bus_port
¶
Event bus port for publishing events and sending commands.
Defines the EventBusPort abstract interface for in-process message dispatch
with separate policies for events (multi-handler fan-out) and commands
(single-handler routing).
EventBusPort
¶
Bases: ABC
Abstract event bus for publishing events and sending commands.
Implementations handle
- Publishing events to one or more registered handlers.
- Sending commands to a single registered handler.
- Registering handlers for specific message types.
Source code in src/forging_blocks/application/ports/outbound/event_bus_port.py
publish(event: Event[EventPayloadType]) -> Result[None, EventBusError]
abstractmethod
async
¶
Publish a domain event to all registered handlers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
event
|
Event[EventPayloadType]
|
The domain event to publish. |
required |
Returns:
| Type | Description |
|---|---|
Result[None, EventBusError]
|
A |
Source code in src/forging_blocks/application/ports/outbound/event_bus_port.py
send(command: Command[CommandPayloadType]) -> Result[None, EventBusError]
abstractmethod
async
¶
Send a command to its registered handler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
command
|
Command[CommandPayloadType]
|
The command to dispatch. |
required |
Returns:
| Type | Description |
|---|---|
Result[None, EventBusError]
|
A |
Source code in src/forging_blocks/application/ports/outbound/event_bus_port.py
register_handler(message_type: type, handler: Any) -> None
abstractmethod
¶
Register a handler for the given message type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message_type
|
type
|
The message class to handle. |
required |
handler
|
Any
|
A handler instance ( |
required |