Reputation: 4297
The @Scheduled
documentation here states that the fixedRateString
value can be the delay in milliseconds as a String value, e.g. a placeholder or a java.time.Duration compliant value
. Meaning I can either write
@Scheduled(fixedRateString = "45s")
OR
@Scheduled(fixedRateString = "45000")
And it should be the same. However when I try to run it I get
Encountered invalid @Scheduled method 'updateWarmupInstances': Invalid fixedRateString value "45s" - cannot parse into long
So it this a mistake on Spring's part or am I doing something wrong ?
Upvotes: 8
Views: 18753
Reputation: 1099
To use the method @Scheduled(fixedRateString)
for durations, you could use a String with the standard duration:
@Scheduled(fixedRateString = "PT45S")
The prefix PT
is for ISO-8601 standard, and in this example, it means 45 seconds.
Another example could be a duration of 1h:
@Scheduled(fixedRateString = "PT1H")
Upvotes: 14
Reputation: 14677
You are looking at the return value of the method, not the input. The input can only be a String in milliseconds, but the return value is a value compliant with Duration.
Upvotes: 4