Ben
Ben

Reputation: 4297

Spring scheduled fixedRateString as Duration

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

Answers (2)

Bruno Morais
Bruno Morais

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

Erik Pragt
Erik Pragt

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

Related Questions