Skip to content

Instantly share code, notes, and snippets.

@mmouih
Last active January 22, 2024 01:29
Show Gist options
  • Save mmouih/51c819dd62c17b063b1e894fdf3b7b54 to your computer and use it in GitHub Desktop.
Save mmouih/51c819dd62c17b063b1e894fdf3b7b54 to your computer and use it in GitHub Desktop.
WatchDog with jitter
<?php
namespace App\Scheduler;
use App\Message\WatchDogMessage;
use Symfony\Component\Scheduler\Schedule;
use Symfony\Component\Scheduler\RecurringMessage;
use Symfony\Component\Scheduler\Attribute\AsSchedule;
use Symfony\Component\Scheduler\Trigger\JitterTrigger;
use Symfony\Component\Scheduler\ScheduleProviderInterface;
use Symfony\Component\Scheduler\Trigger\PeriodicalTrigger;
#[AsSchedule('jitter_watch')]
class WatchDogJitterScheduleProvider implements ScheduleProviderInterface
{
public function getSchedule(): Schedule
{
// Watch every 5 seconds with a jitter of 0 to 10 seconds
$trigger = new JitterTrigger(
new PeriodicalTrigger('5 seconds'),
10
);
return (new Schedule())->add(
RecurringMessage::trigger($trigger, new WatchDogMessage(['logger', 'imports', 'exports']))
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment