如何解决如何从 yml 文件中读取 fixedDelayMinutes 并在 spring-boot
我想以分钟为单位从 yml 读取值,然后在调度程序中以毫秒为单位给出值
例如5分钟 5 * 60 * 1000
@Scheduled(fixedDelayString = "${jobintervalmins} * 60 * 1000") 我试过这样,但它不起作用
我收到错误:无效的 fixedDelayString 值“5 * 60 * 1000” - 无法解析为 long
解决方法
您不能专门让它将值解释为分钟,但可以将其解析为 Duration
。使用 this code:
private static long parseDelayAsLong(String value) throws RuntimeException {
if (value.length() > 1 && (isP(value.charAt(0)) || isP(value.charAt(1)))) {
return Duration.parse(value).toMillis();
}
return Long.parseLong(value);
}
如果该值的第一个或第二个字符是 P
,则会使用 Duration.parse(value)
将其转换为 long。例如,5 分钟的值可以表示为 PT5M
。
您可以将注释配置为使用 ${jobinterval}
:
@Scheduled(fixedDelayString = "${jobinterval}")
然后您可以在您的 yaml 文件中指定一个将用作毫秒的数值:
jobinterval: 30000
或者您可以使用任何您想要的单位指定持续时间的纹理表示:
jobinterval: PT5M
jobinternal: PT300S
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。