Spring 预定 fixedRateString 作为 Duration

Ben*_*Ben 5 java cron spring scheduling

@Scheduled 此处文档指出该fixedRateString值可以是the delay in milliseconds as a String value, e.g. a placeholder or a java.time.Duration compliant value. 意思是我可以写

@Scheduled(fixedRateString = "45s")
Run Code Online (Sandbox Code Playgroud)

或者

@Scheduled(fixedRateString = "45000")
Run Code Online (Sandbox Code Playgroud)

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

Encountered invalid @Scheduled method 'updateWarmupInstances': Invalid fixedRateString value "45s" - cannot parse into long
Run Code Online (Sandbox Code Playgroud)

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

miz*_*ebr 11

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

@Scheduled(fixedRateString = "PT45S")
Run Code Online (Sandbox Code Playgroud)

前缀 PT 适用于ISO-8601 标准,在本例中,它表示 45 秒的持续时间。

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

@Scheduled(fixedRateString = "PT1H")
Run Code Online (Sandbox Code Playgroud)


Eri*_*agt 4

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

  • 返回值...什么方法?注释的“fixedRateString”属性?或者您是否建议带注释的方法可以返回 String 或 Duration 来描述调用它的频率? (3认同)