@Scheduledдокументация здесь утверждает, что значение 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 или я что-то делаю не так ?




Вы смотрите на возвращаемое значение метода, а не на ввод. На входе может быть только строка в миллисекундах, но возвращаемое значение - это значение, соответствующее параметру Duration.
Возвращаемое значение… какой метод? Атрибут fixedRateString аннотации? Или вы предлагаете, чтобы аннотированный метод мог возвращать либо String, либо Duration для описания частоты, с которой он будет вызываться?
Чтобы использовать метод @Scheduled (fixedRateString) для продолжительности, вы можете использовать String со стандартной продолжительностью:
@Scheduled(fixedRateString = "PT45S")
Префикс PT предназначен для Стандарт ISO-8601 и в этом примере означает продолжительность 45 секунд.
Другим примером может быть продолжительность 1 час:
@Scheduled(fixedRateString = "PT1H")
К вашему сведению, недавно была открыта проблема с запросом синтаксического анализа гибкой продолжительности, которого вы и я ожидали. Оказывается, это проблема Spring framework, а не Spring Boot: github.com/spring-projects/spring-framework/issues/22013