nepada/message-bus-nette

Integration of nepada/message-bus into Nette Framework.

v2.4.1 2024-10-27 16:33 UTC

README

Build Status Coverage Status Downloads this Month Latest stable

Installation

Via Composer:

$ composer require nepada/message-bus-nette

Register the extension in config.neon:

extensions:
    messageBus: Nepada\MessageBusNette\DI\MessageBusExtension

Usage

See nepada/message-bus for the documentation of the core library.

Logging

The extension tries to autowire PSR compatible logger into logging middleware. If this doesn't work for you, specify the logger service in configuration explicitly:

messageBus:
    logger: @myLoggerService

Nested command handling

Nested command handling is not allowed by default, this can be changed in configuration:

messageBus:
    allowNestedCommandHandling: true

Doctrine

Doctrine ORM specific features for message bus are provided by nepada/message-bus-doctrine package. Follow the link for more detailed documentation. Once you install the package, it gets detected by DI extension and all necessary services are set up.

With Doctrine integration:

  • all commands are handled in a transaction and all changes are automatically flushed and commited after the handler successfully finishes, or rolled back on error,
  • database transactions started outside of command bus are forbidden,
  • entity manager is (optionally) cleared before and after the handling of every command.

Change or completely disable the default entity manager clearing logic:

messageBus:
    clearEntityManager
        onStart: false
        onSuccess: false
        onError: false

You can record your domain events inside entities implementing Nepada\Bridges\MessageBusDoctrine\Events\ContainsRecordedEvents and they will be automatically collected and dispatched on flush.

Tip: use SearchExtension to auto-register command handlers and event subscribers

search:
    messageBusHandlers:
        in: %appDir%
        implements:
            - Nepada\MessageBus\Commands\CommandHandler
            - Nepada\MessageBus\Events\EventSubscriber