PHP 7.1+ lightweight message bus supporting CQRS and Micro Services
prooph/service-bus is a lightweight messaging facade. It allows you to define the API of your model with the help of messages.
- Command messages describe actions your model can handle.
- Event messages describe things that happened while your model handled a command.
- Query messages describe available information that can be fetched from your (read) model.
prooph/service-bus shields your model. Data input and output ports become irrelevant and no longer influence business logic. We're looking at you Hexagonal Architecture.
prooph/service-bus decouples your model from any framework. You can use a web framework like Zend, Symfony, Laravel and co. to handle http requests and pass them via prooph/service-bus to your model but you can also receive the same messages via CLI or from a messaging system like RabbitMQ or Beanstalkd.
It is also a perfect fit for microservices architecture as it provides an abstraction layer for message-based inter-service communication.
You can install prooph/service-bus via composer by adding "prooph/service-bus": "~5.0" as requirement to your composer.json.
<?php use Prooph\ServiceBus\CommandBus; use Prooph\ServiceBus\Example\Command\EchoText; use Prooph\ServiceBus\Plugin\Router\CommandRouter; $commandBus = new CommandBus(); $router = new CommandRouter(); //Register a callback as CommandHandler for the EchoText command $router->route('Prooph\ServiceBus\Example\Command\EchoText') ->to(function (EchoText $aCommand): void { echo $aCommand->getText(); }); //Expand command bus with the router plugin $router->attachToMessageBus($commandBus); //We create a new Command $echoText = new EchoText('It works'); //... and dispatch it $commandBus->dispatch($echoText); //Output should be: It worksDocumentation is in the docs tree, and can be compiled using bookdown.
$ php ./vendor/bin/bookdown docs/bookdown.json $ php -S 0.0.0.0:8080 -t docs/html/Then browse to http://localhost:8080/
- Ask questions on prooph-users google group.
- File issues at https://github.com/prooph/service-bus/issues.
- Say hello in the prooph gitter chat.
Please feel free to fork and extend existing or add new features and send a pull request with your changes! To establish a consistent code quality, please provide unit tests for all your changes and may adapt the documentation.
Released under the New BSD License.

