Skip to main content
Middlewares can observe event lifecycle transitions, react to handler registration changes, and add cross-cutting behavior around event execution.

Quick setup

from abxbus import EventBus
from abxbus.middlewares import LoggerEventBusMiddleware, WALEventBusMiddleware

bus = EventBus(
    name='MyBus',
    middlewares=[
        WALEventBusMiddleware('./events.jsonl'),
        LoggerEventBusMiddleware('./events.log'),
    ],
)

Middleware interface

Use three optional hooks:
  • Event lifecycle: on_event_change / onEventChange
  • Handler-result lifecycle: on_event_result_change / onEventResultChange
  • Handler registration lifecycle: on_bus_handlers_change / onBusHandlersChange
See EventBusMiddleware for full signatures and custom middleware examples.

Lifecycle

Middleware hooks receive lifecycle statuses in strict order:
  • Event hooks: pending -> started -> completed
  • Event-result hooks: pending -> started -> completed
  • Handler registration hooks: called when handlers are added or removed via on(...) and off(...)
status passed to lifecycle hooks is never error. Handler failures are exposed on event_result.status and event_result.error during the completed callback.

Built-in classes