bodaclick / async-event-dispatcher
Library to asincronously dispatch events
Requires
- php: >=5.4.0
- jms/serializer-bundle: 0.13.*@dev
Requires (Dev)
- oldsound/rabbitmq-bundle: dev-master
This package is not auto-updated.
Last update: 2024-11-09 15:46:24 UTC
README
This lib is intended to allow for multiple "drivers" (a.k.a listeners) that publish using a fire and forget strategy, mostly within pub/sub software.
The approach is inspired in Symfony's EventDispatcher component. However, the AsyncDispatcher registers the driver to all the events that have been registered (by adding a driver) if no event is passed, calling the driver for all of them.
Installation
Install via composer.
Add to your current composer.json require
key: "bodaclick/async-event-dispatcher":"1.0.x-dev"
Usage
You have to add drivers to the AsyncEventDispatcher
so when an AsyncEventInterface
is
fired it will be notified.
Adding a Driver
use BDK\AsyncEventDispatcher\AsyncEventDispatcher; use BDK\AsyncEventDispatcher\AsyncDriver\RabbitMQDriver; $driver = new RabbitMQDriver(); $ed = new AsyncEventDispatcher(); //Single event. It also registers the event $ed->addDriver($driver, 'event.name'); //All events available $ed->addDriver($driver);
Firing the even
use BDK\AsyncEventDispatcher\AsyncEventInterface; $event = new CustomEvent(); //implements AsyncEventInterface $ed->dispatch($event);
Available drivers
Only two drivers are available
- RabbitMQ
- File
Feel free to PR with new drivers!
Extension
Creating a new driver is as easy as implementing the AsyncEventDriverInterface