wwwision/event-scheduler

简单事件调度器

安装: 10

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 3

分支: 0

开放问题: 0

类型:neos-package

v0.1.0 2017-07-26 15:41 UTC

This package is auto-updated.

Last update: 2024-09-14 19:31:32 UTC


README

Neos.EventSourcing 流包的简单事件调度器 Neos.EventSourcing

用法

class SomeClass implements EventListenerInterface
{
    const TASK_TYPE = 'plans';

    /**
     * @Flow\Inject
     * @var EventScheduler
     */
    protected $scheduler;

    public function whenSomeThingWasPlanned(SomeThingWasPlanned $event): void
    {
        $taskPayload = ['nameOfTheThing' => $event->getTitle()];
        $this->scheduler->scheduleTask($event->getCorrelationId(), self::TASK_TYPE, $event->getPlannedDate(), $taskPayload);
    }

    public function whenSomeThingWasCancelled(SomeThingWasCancelled $event): void
    {
        $this->scheduler->cancelTask($event->getCorrelationId(), self::TASK_TYPE);
    }

    public function whenSchedulerWasTriggered(SchedulerWasTriggered $event): void
    {
        if (!$event->matchesType(self::TASK_TYPE)) {
            return;
        }
        $payload = $event->getPayload();

        // TODO Do something with the $paload
    }
}

要使此功能生效,需要定期执行 ./flow wwwision.eventscheduler:scheduler:run 命令(例如,通过 cron)

注意:在此示例中,SomeThingWasPlannedSomeThingWasCancelled 是领域事件。SchedulerWasTriggered 是由 EventScheduler 触发的“集成事件”,一旦达到指定的时间戳就会触发。