wwwision / event-scheduler
简单事件调度器
v0.1.0
2017-07-26 15:41 UTC
Requires
- php: ~7.1.0
- neos/event-sourcing: dev-master
- neos/flow: ^4.0
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)
注意:在此示例中,SomeThingWasPlanned
和 SomeThingWasCancelled
是领域事件。SchedulerWasTriggered
是由 EventScheduler
触发的“集成事件”,一旦达到指定的时间戳就会触发。