EventSourceInterface¶
Источник событий для воркера: очередь, вебхук, файл, память.
Роутер сам забирает события в EventRouter::run() и рассылает их по одному.
Удобнее всего реализовать генератором: код после yield выполняется, когда
событие уже разослано, — там можно подтвердить сообщение в очереди.
final class QueueEventSource implements EventSourceInterface
{
public function events(): iterable
{
while ($message = $this->queue->receive()) {
yield new Event($message->getRoutingKey(), $message->getBody());
$this->queue->acknowledge($message); // событие разослано
}
}
}
Источник заканчивается, когда заканчивается итерация. Бесконечная очередь может не заканчиваться никогда — тогда воркер работает до остановки процесса.
- Full name:
\Selyusize\EventsRouter\Contract\Source\EventSourceInterface
Methods¶
events¶
События по одному, в порядке получения.