Я пытаюсь интегрировать jobrunr 5.1.6 в свое приложение micronaut. Я не могу заставить фильтр, реализующий ApplyStateFilter, запускаться при обработке задания. Пожалуйста, смотрите ниже:
class JobCompletionFilter : ApplyStateFilter {
override fun onStateApplied(job: Job?, oldState: JobState?, newState: JobState?) {
if (newState != null) {
if (isFailed(newState) && maxAmountOfRetriesReached(job)) {
// Failed after retry. Add logs and handle strategy logic
} else if (newState is SucceededState) {
// Job succeeded. Add job completion logic
}
}
}
Как внедрить этот фильтр для всех моих заданий? Ниже показано, как я ставлю в очередь задания
@Inject
lateinit var jobScheduler: JobScheduler
jobScheduler.enqueue {jobProcessor.execute(job)}
В бесплатной версии вам придется вручную настраивать JobRunr через Fluent Java API вместо использования интеграции Spring. Там у вас есть возможность пройти фильтр. Пример:
JobRunr
.configure()
.withJobFilter(...) // pass your job filters here
Для получения дополнительной информации см. Fluent API.
В версии Pro любой фильтр заданий, который является Spring Bean (например, @Component
или @Service
), будет автоматически выполняться без какой-либо дополнительной настройки. Для получения дополнительной информации см. документы.