bodaclick/async-event-dispatcher

用于异步分发事件的库

1.0.1 2014-02-07 14:01 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:11:16 UTC


README

这个库旨在允许有多个“驱动程序”(即监听器),使用“发射并忘记”策略发布事件,主要在pub/sub软件中。

这种方法受到Symfony的EventDispatcher组件的启发。然而,AsyncDispatcher会将驱动程序注册到所有已注册的事件(通过添加驱动程序),如果未传递事件,则调用该驱动程序来处理所有事件。

安装

使用composer安装。将以下代码添加到您的当前composer.json文件中的require键:"bodaclick/async-event-dispatcher":"1.0.x-dev"

使用方法

您必须将驱动程序添加到AsyncEventDispatcher,这样当AsyncEventInterface被触发时,它会收到通知。

添加驱动程序

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);

触发事件

use BDK\AsyncEventDispatcher\AsyncEventInterface;

$event = new CustomEvent(); //implements AsyncEventInterface
$ed->dispatch($event);

可用驱动程序

目前只有两个驱动程序可用

  • RabbitMQ
  • 文件

欢迎提交带有新驱动程序的PR!

扩展

创建新的驱动程序就像实现AsyncEventDriverInterface一样简单