<?php
namespace Enqueue\Symfony\Client;
use Enqueue\Client\SpoolProducer;
use Symfony\Component\Console\ConsoleEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
class FlushSpoolProducerListener implements EventSubscriberInterface
{
/**
* @var SpoolProducer
*/
private $producer;
public function __construct(SpoolProducer $producer)
{
$this->producer = $producer;
}
public function flushMessages()
{
$this->producer->flush();
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array
{
$events = [];
if (class_exists(KernelEvents::class)) {
$events[KernelEvents::TERMINATE] = 'flushMessages';
}
if (class_exists(ConsoleEvents::class)) {
$events[ConsoleEvents::TERMINATE] = 'flushMessages';
}
return $events;
}
}