trollbus / message-bus
Trollbus is Flexible Message Bus implementation with middleware and handler result support
0.1.0
2025-03-09 19:58 UTC
Requires
- php: 8.1.* || 8.2.* || 8.3.* || 8.4.*
- psr/clock: ^1.0
- psr/log: ^3.0
- trollbus/message: 0.1.0
README
Trollbus
is another yet Flexible Message Bus implementation with middleware and handler result support.
Inspired by Telephantast. Most of the ideas were taken from there.
Installation
composer require trollbus/message-bus
Usage
Common usage:
use Trollbus\MessageBus\CreatedAt\CreatedAtMiddleware; use Trollbus\MessageBus\Handler\CallableHandler; use Trollbus\MessageBus\HandlerRegistry\ClassStringMap; use Trollbus\MessageBus\HandlerRegistry\ClassStringMapHandlerRegistry; use Trollbus\MessageBus\Logging\LogMiddleware; use Trollbus\MessageBus\MessageBus; use Trollbus\MessageBus\MessageContext; use Trollbus\MessageBus\MessageId\CausationIdMiddleware; use Trollbus\MessageBus\MessageId\CorrelationIdMiddleware; use Trollbus\MessageBus\MessageId\MessageIdMiddleware; use Trollbus\MessageBus\MessageId\RandomMessageIdGenerator; use Trollbus\MessageBus\Transaction\WrapInTransactionMiddleware; // Create Message handler $registerUserHandler = new \Trollbus\MessageBus\Handler\CallableHandler( id: 'register-user', handler: function(): void { // ... Some code }, ); // Configure handler registry $handlerRegistry = new ClassStringMapHandlerRegistry( (new ClassStringMap()) ->with(RegisterUser::class, $registerUserHandler), ); // Configure Message Bus $messageBus = new MessageBus( handlerRegistry: $handlerRegistry, middlewares: [ new CreatedAtMiddleware(), new MessageIdMiddleware( use RandomMessageIdGenerator(), ), new CorrelationIdMiddleware(), new CausationIdMiddleware(), new LogMiddleware($logger), // Use any psr logger new WrapInTransactionMiddleware($transactionProvider), ], ); // Use Message Bus $messageBus->dispatch(new RegisterUser( username: 'choibm', password: '123', ));