@@ -478,6 +478,103 @@ before being further redispatched to its corresponding handler::
478
478
}
479
479
}
480
480
481
+ Scheduler Events
482
+ ----------------
483
+
484
+ PreRunEvent
485
+ ~~~~~~~~~~~
486
+
487
+ **Event Class **: :class: `Symfony\\ Component\\ Scheduler\\ Event\\ PreRunEvent `
488
+
489
+ ``PreRunEvent `` allows to modify the :class: `Symfony\\ Component\\ Scheduler\\ Schedule `
490
+ or cancel a message before it's consumed::
491
+
492
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
493
+ use Symfony\Component\Scheduler\Event\PreRunEvent;
494
+
495
+ public function onMessage(PreRunEvent $event): void
496
+ {
497
+ $schedule = $event->getSchedule();
498
+ $context = $event->getMessageContext();
499
+ $message = $event->getMessage();
500
+
501
+ // do something with the schedule, context or message
502
+
503
+ // and/or cancel message
504
+ $event->shouldCancel(true);
505
+ }
506
+
507
+ Execute this command to find out which listeners are registered for this event
508
+ and their priorities:
509
+
510
+ .. code-block :: terminal
511
+
512
+ $ php bin/console debug:event-dispatcher "Symfony\Component\Scheduler\Event\PreRunEvent"
513
+
514
+ PostRunEvent
515
+ ~~~~~~~~~~~~
516
+
517
+ **Event Class **: :class: `Symfony\\ Component\\ Scheduler\\ Event\\ PostRunEvent `
518
+
519
+ ``PostRunEvent `` allows to modify the :class: `Symfony\\ Component\\ Scheduler\\ Schedule `
520
+ after a message is consumed::
521
+
522
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
523
+ use Symfony\Component\Scheduler\Event\PostRunEvent;
524
+
525
+ public function onMessage(PostRunEvent $event): void
526
+ {
527
+ $schedule = $event->getSchedule();
528
+ $context = $event->getMessageContext();
529
+ $message = $event->getMessage();
530
+
531
+ // do something with the schedule, context or message
532
+ }
533
+
534
+ Execute this command to find out which listeners are registered for this event
535
+ and their priorities:
536
+
537
+ .. code-block :: terminal
538
+
539
+ $ php bin/console debug:event-dispatcher "Symfony\Component\Scheduler\Event\PostRunEvent"
540
+
541
+ FailureEvent
542
+ ~~~~~~~~~~~~
543
+
544
+ **Event Class **: :class: `Symfony\\ Component\\ Scheduler\\ Event\\ FailureEvent `
545
+
546
+ ``FailureEvent `` allows to modify the :class: `Symfony\\ Component\\ Scheduler\\ Schedule `
547
+ when a message consumption throws an exception::
548
+
549
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
550
+ use Symfony\Component\Scheduler\Event\FailureEvent;
551
+
552
+ public function onMessage(FailureEvent $event): void
553
+ {
554
+ $schedule = $event->getSchedule();
555
+ $context = $event->getMessageContext();
556
+ $message = $event->getMessage();
557
+
558
+ $error = $event->getError();
559
+
560
+ // do something with the schedule, context, message or error (logging, ...)
561
+
562
+ // and/or ignore failure event
563
+ $event->shouldIgnore(true);
564
+ }
565
+
566
+ Execute this command to find out which listeners are registered for this event
567
+ and their priorities:
568
+
569
+ .. code-block :: terminal
570
+
571
+ $ php bin/console debug:event-dispatcher "Symfony\Component\Scheduler\Event\FailureEvent"
572
+
573
+ .. versionadded :: 6.4
574
+
575
+ The ``PreRunEvent ``, ``PostRunEvent `` and ``FailureEvent `` events were
576
+ introduced in Symfony 6.4.
577
+
481
578
.. _`Memoizing` : https://en.wikipedia.org/wiki/Memoization
482
579
.. _`cron command-line utility` : https://en.wikipedia.org/wiki/Cron
483
580
.. _`crontab.guru website` : https://crontab.guru/
0 commit comments