solilokiam/async-event-dispatcher

symfony 的异步事件调度器

dev-master 2014-11-16 17:58 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:24:54 UTC


README

Build Status SensioLabsInsight Dependency Status Scrutinizer Code Quality

此组件是一个基于 symfony 事件调度器组件的异步事件调度器,但采用“触发即忘记”的方式。目前它需要 Redis 来运行,但如果你使用其他队列系统,扩展和使用它非常简单。

警告

此代码尚未准备好用于生产。这仍然是一个正在进行中的项目,随着时间的推移,事情可能会发生很大变化。

安装

使用 composer

将以下行添加到你的 composer.json 文件中

"require": {
      ...
      "solilokiam/async-event-dispatcher": "dev-master"
    },

如何调度事件?

如果你已经使用了 symfony 事件调度器,使用它非常简单。首先,你需要创建自己的事件。此事件必须扩展 AsyncEvent。一旦你创建了事件,你需要使用 AsyncEventDispatcher 来调度它。当你实例化 AsyncEventDispatcher 类时,你需要注入一个实现 EventDriverInterface 的对象。此组件为你提供了一个 RabbitMq 接口的实现。如果你需要,你也可以创建自己的。

在下面的示例中,你可以看到如何做到这一点

namespace Foo\Events;

use Solilokiam\AsyncEventDispatcher\AsyncEvent;

class FooAsyncEvent extends AsyncEvent
{
    protected $foo;

    public function setFoo($value)
    {
        $this->foo = $value;

        return $this;
    }

    public function getFoo()
    {
        return $this->foo;
    }
}
$redirEventDriver = new RedisDriver($redisConfig);

$asyncEventDispatcher = new AsyncEventDispatcher($redisEventDriver);

$fooEvent = new FooAsyncEvent();
$fooEvent->setFoo('whatever');

$dispatcher->dispatch('foo.event', $fooEvent);

如何定义事件监听器?

待办事项

如何消费调度器事件?

待办事项

许可证

AsyncEventDispatcher 根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。