gpt4 book ai didi

java - 如果失败则在给定时间内执行任务

转载 作者:行者123 更新时间:2023-12-02 13:36:07 26 4
gpt4 key购买 nike

我正在尝试创建一个能够执行某些任务(方法)的服务,并在任务失败时重试它。

为了创建计时器,我使用了带有quartz的计时器服务(我无法更改计时器服务)。

定时服务有方法

this.timerService.createTimerRunRepeatedly(
handledId,
timerId,
optionalDescription,
totalFireCount,
intervalMiliSeconds,
offsetMiliseconds,
optionalCallbackData);

它还可以为创建的计时器注册一个处理程序。

this.timerService.registerHandler(
handlerId,
firedCallback,
expiredCallback);

firedCallback -> (可选)每次带有此处理程序的计时器触发时调用的回调( final Consumer<T> firedCallback )

expiredCallback -> (可选)在带有此处理程序的计时器上次触发后调用的回调 ( final Consumer<T> expiredCallback )

我创建了一个新的TaskRetryService,但我不知道如何将某些方法传递给此 retryService 以便执行它。

最佳答案

由于您使用的是 Spring,请考虑使用 Spring-Retry它具有处理失败和重试的开箱即用功能。

通过使用@Retryable(SomeException.class)注释方法,当引发SomeException时,该方法将被重试。可以进一步自定义以指定重试尝试、尝试之间的延迟(随机和指数),如 @Retryable(maxAttempts=12, backoff=@Backoff(delay=100, maxDelay=500) )

对于失败回调,将调用@Recover注释的方法。

有关更多实现说明,请查看 readme在 github 和 this文章。

希望这有帮助!

关于java - 如果失败则在给定时间内执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42992928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com