Automatically register scheduled events from Symfony Scheduler in Sentry Cron. Only cron expressions are supported.
Use composer to install the library from packagist.
composer require fusonic/sentry-cronFusonic\SentryCron\SentrySchedulerEventSubscriber:
arguments:
$enabled: trueAny regular event that is triggered with a cron expression can be used.
By default, the Sentry defaults are used for monitor configurations. Per event, you can configure an attribute to use your own configuration:
use Fusonic\SentryCron\SentryMonitorConfig;
#[SentryMonitorConfig(checkinMargin: 30, maxRuntime: 30, failureIssueThreshold: 5, recoveryThreshold: 5)]
class SomeEvent {
// ...
}If you have an unpredictable longer-running scheduled task, you can manually check in by implementing AsyncCheckInScheduleEventInterface.
The scheduled event:
use Fusonic\SentryCron\SentryMonitorConfig;
use Fusonic\SentryCron\AsyncCheckInScheduleEventInterface;
use \Fusonic\SentryCron\AsyncCheckInScheduleEventTrait;
class SomeEvent implements AsyncCheckInScheduleEventInterface {
use AsyncCheckInScheduleEventTrait;
// ...
}The manual check in:
class SomeEventHandler {
private const BATCH_SIZE = 100;
public function __invoke(SomeEvent $event): void {
$offset = 0;
// e.g.: some slow database processing
$entitiesToProcess = // ...
$nextEvent = new SomeEvent(offset: $offset + self::BATCH_SIZE);
if (count($entitiesToProcess) === 0) {
$nextEvent->markAsLast();
}
$this->eventBus->dispatch($nextEvent);
}
}