Domain events for Doctrine ODM and ORM
This bundle adds Domain Event dispatching on doctrine events via a MessageBus.
composer require andy-thorne/domain-events-bundle
# Defaults domain_events: orm: true odm: false bus: domain_event.bus transport: async_domain_events configure_routing: true # Auto-configures messenger routing for DomainEventInterfaces to route to the configured transport framework: messenger: transports: async_domain_events: "%env(ASYNC_MESSENGER_TRANSPORT_DSN)%"
The bundle will also configure these messenger settings based on your
domain_events config. If you already have buses
configured, you will need to specify a
# The bundle also configures your framework: messenger: # Set up a bus that will allows no handlers buses: <domain_events.bus>: default_middleware: allow_no_handlers # Route all domain events to the domain event transport if configure_routing is true (default) routing: 'AndyThorne\Components\DomainEventsBundle\Events\DomainEventInterface': <domain_events.transport>
Domain Events uses the app's MessageBus to transport domain events. The default Messenger Component is configured to be synchronous and requires at least one handler to be defined for each Message. For Domain Events to work, we need to configure an asynchronous MessageBus and allow it to have no handlers:
Domain Events are dispatched within a doctrine postFlush lifecycle event