Spring 计划的 fixedRateString 作为持续时间

Spring scheduled fixedRateString as Duration

@Scheduled documentation here 表示 fixedRateString 值可以是 the delay in milliseconds as a String value, e.g. a placeholder or a java.time.Duration compliant value。意思是我可以写

@Scheduled(fixedRateString = "45s")

@Scheduled(fixedRateString = "45000")

而且应该是一样的。但是,当我尝试 运行 它时,我得到

Encountered invalid @Scheduled method 'updateWarmupInstances': Invalid fixedRateString value "45s" - cannot parse into long

所以这是 Spring 的错误还是我做错了什么 ?

您正在查看方法的 return 值,而不是输入。输入只能是毫秒级的String,但是return值是一个符合Duration.

的值

要对持续时间使用方法@Scheduled(fixedRateString),您可以使用具有标准持续时间的字符串:

@Scheduled(fixedRateString = "PT45S")

前缀 PT 用于 ISO-8601 standard,在此示例中,它表示持续时间为 45 秒。

另一个例子可以是 1 小时的持续时间:

@Scheduled(fixedRateString = "PT1H")