vendor/3slab/vdm-library-bundle/EventSubscriber/Monitoring/MonitoringWorkerStoppedSubscriber.php line 64

Open in your IDE?
  1. <?php
  2. /**
  3.  * @package    3slab/VdmLibraryBundle
  4.  * @copyright  2020 Suez Smart Solutions 3S.lab
  5.  * @license    https://github.com/3slab/VdmLibraryBundle/blob/master/LICENSE
  6.  */
  7. namespace Vdm\Bundle\LibraryBundle\EventSubscriber\Monitoring;
  8. use Psr\Log\NullLogger;
  9. use Symfony\Component\Messenger\Event\WorkerStoppedEvent;
  10. use Vdm\Bundle\LibraryBundle\Event\CollectWorkerStoppedEvent;
  11. use Vdm\Bundle\LibraryBundle\Monitoring\Model\RunningStat;
  12. use Vdm\Bundle\LibraryBundle\Service\Monitoring\Monitoring;
  13. use Vdm\Bundle\LibraryBundle\Service\Monitoring\MonitoringService;
  14. use Psr\Log\LoggerInterface;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. /**
  17.  * Class MonitoringWorkerStoppedSubscriber
  18.  *
  19.  * @package Vdm\Bundle\LibraryBundle\EventSubscriber\Monitoring
  20.  */
  21. class MonitoringWorkerStoppedSubscriber implements EventSubscriberInterface
  22. {
  23.     /**
  24.      * @var MonitoringService
  25.      */
  26.     protected $monitoring;
  27.     /**
  28.      * @var LoggerInterface
  29.      */
  30.     protected $logger;
  31.     /**
  32.      * MonitoringWorkerTerminateSubscriber constructor.
  33.      *
  34.      * @param MonitoringService $monitoring
  35.      * @param LoggerInterface|null $vdmLogger
  36.      */
  37.     public function __construct(MonitoringService $monitoringLoggerInterface $vdmLogger null)
  38.     {
  39.         $this->monitoring $monitoring;
  40.         $this->logger $vdmLogger ?? new NullLogger();
  41.     }
  42.     /**
  43.      * Method executed on ConsoleTerminateEvent event
  44.      *
  45.      * @param WorkerStoppedEvent $event
  46.      */
  47.     public function onWorkerStoppedEvent(WorkerStoppedEvent $event)
  48.     {
  49.         $this->handleMonitoring();
  50.     }
  51.     /**
  52.      * Method executed on CollectWorkerStoppedEvent event
  53.      *
  54.      * @param WorkerStoppedEvent $event
  55.      */
  56.     public function onCollectWorkerStoppedEvent(CollectWorkerStoppedEvent $event)
  57.     {
  58.         $this->handleMonitoring();
  59.     }
  60.     /**
  61.      * Set worker stopped state and flush monitoring stat to storage
  62.      */
  63.     protected function handleMonitoring()
  64.     {
  65.         $this->monitoring->update(Monitoring::RUNNING_STAT0);
  66.         $this->logger->debug('worker stopped metric sent');
  67.         $this->monitoring->flush();
  68.         $this->logger->debug('metric storage flushed');
  69.     }
  70.     /**
  71.      * {@inheritDoc}
  72.      * @codeCoverageIgnore
  73.      */
  74.     public static function getSubscribedEvents(): array
  75.     {
  76.         return [
  77.             WorkerStoppedEvent::class => 'onWorkerStoppedEvent',
  78.             CollectWorkerStoppedEvent::class => 'onCollectWorkerStoppedEvent',
  79.         ];
  80.     }
  81. }