bodaclick/async-event-dispatcher

Library to asincronously dispatch events

1.0.1 2014-02-07 14:01 UTC

This package is not auto-updated.

Last update: 2024-04-13 12:59:07 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