Spring запланировал fixedRateString как Duration

@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 или я что-то делаю не так ?

К вашему сведению, недавно была открыта проблема с запросом синтаксического анализа гибкой продолжительности, которого вы и я ожидали. Оказывается, это проблема Spring framework, а не Spring Boot: github.com/spring-projects/spring-framework/issues/22013

Bampfer 15.03.2019 15:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
5 773
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы смотрите на возвращаемое значение метода, а не на ввод. На входе может быть только строка в миллисекундах, но возвращаемое значение - это значение, соответствующее параметру Duration.

Возвращаемое значение… какой метод? Атрибут fixedRateString аннотации? Или вы предлагаете, чтобы аннотированный метод мог возвращать либо String, либо Duration для описания частоты, с которой он будет вызываться?

VGR 04.03.2021 21:23

Чтобы использовать метод @Scheduled (fixedRateString) для продолжительности, вы можете использовать String со стандартной продолжительностью:

@Scheduled(fixedRateString = "PT45S")

Префикс PT предназначен для Стандарт ISO-8601 и в этом примере означает продолжительность 45 секунд.

Другим примером может быть продолжительность 1 час:

@Scheduled(fixedRateString = "PT1H")

Другие вопросы по теме