1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/redkale-redkale

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
scheduled.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 11:56 84b3ad0

Периодические задачи

Аннотация @Scheduled позволяет выполнять метод с заданной периодичностью. Метод должен быть без параметров или принимать параметр типа ScheduledEvent.

Свойства

Свойство По умолчанию Описание
name Не определено Имя, может использоваться для идентификации задачи в компонентах сторонних реализаций периодических задач, например, xxl-job.
cron Не определено Выражение cron, также можно использовать константы: yearly, annually, monthly, weekly, daily, midnight, hourly, minutely, 1m, 2m, 3m, 5m, 10m, 15m, 30m, 1h, 2h, 3h, 6h, ${env.scheduled.cron}: чтение из системного конфигурационного параметра.
zone Не определено Часовой пояс, действует только при наличии значения у cron, например: «Asia/Shanghai».
fixedDelay -1 Время задержки, отрицательное значение не допускается, поддерживает конфигурацию параметров, умножение и значения полей объектов.
Поддерживаемые способы настройки значений параметров:
100: установка числового значения;
${env.scheduled.fixedDelay}: чтение из системного конфигурационного параметра.
Если значение больше 0 и fixedRate меньше 0, используется ScheduledThreadPoolExecutor.scheduleWithFixedDelay.
fixedRate -1 Период времени, отрицательное значение не допускается, поддерживает настройку параметров, умножение и значения полей объектов.
Поддерживаемые способы установки значений параметров:
100: установка числового значения;
${env.scheduled.fixedRate}: чтение из системного конфигурационного параметра.
Если значение больше 0 и fixedRate и fixedDelay меньше 0, используется ScheduledThreadPoolExecutor.scheduleAtFixedRate.
initialDelay -1 Начальная задержка, отрицательное значение не допускается, поддерживает настройку параметров, умножение и значения полей объектов.
Поддерживаемые способы установки значений параметров:
100: установка числового значения;
${env.scheduled.initialDelay}: чтение из системного конфигурационного параметра.
Если значение больше 0 и fixedRate и fixedDelay меньше 0, используется ScheduledThreadPoolExecutor.schedule.
timeUnit TimeUnit.SECONDS Единица времени TimeUnit.
comment Не определено Комментарий.
mode LoadMode.LOCAL Применяется к режиму Service, по умолчанию: LOCAL, означает, что периодические задачи в удаленном режиме Service не действуют.

Основные примеры использования

  • Выполнение каждую секунду:
@Scheduled(cron = "0/1 * * * * ?")
public void task1() {
    System.out.println(Times.nowMillis() + "执行一次");
}
  • Числовая настройка: после запуска системы через 10 минут выполняется каждые 60 минут.
@Scheduled(fixedDelay = "10", fixedRate = "60", timeUnit = TimeUnit.MINUTES)
private void task3() {
    System.out.println(Times.nowMillis() + "执行一次");
}
  • Настройка через переменные среды: интервал между выполнениями определяется переменной среды env.scheduled.fixedRate, если она не задана, используется значение по умолчанию 60 секунд.
@Scheduled(fixedRate = "${env.scheduled.fixedRate:60}")
public String task2() {
    System.out.println(Times.nowMillis() + "执行一次");
    return "";
}

Базовая конфигурация

<!--
    Глобальные настройки периодических задач для сервиса, если узел не настроен, автоматически создаётся новый.
    enabled: включать ли кэширование. По умолчанию: true
-->
<scheduled enabled="true"/>

Использование Xxl-Job

Annotation Scheduled позволяет использовать сторонние реализации, пакет redkale-plugins предоставляет реализацию xxl-job и не зависит от пакета xxl-job.

Зависимости в pom

<dependency>
    <groupId>org.redkalex</groupId>
    <artifactId>redkale-plugins</artifactId>
    <version>2.8.0</version>
</dependency>

Конфигурационный файл

<scheduled enabled="true">
    <xxljob addresses="http://localhost:8080/xxl-job-admin"
            executorName="redkale-examples"
            ip="127.0.0.1" <!-- опционально -->
            port="5678"    <!-- опционально -->
            accessToken="default_token" />
</scheduled>

Использование

@Scheduled(name = "testTask")
public void runTask(ScheduledEvent event) {
    System.out.println("xxl-job параметр param: " + event.getString("param"));
    System.out.println("xxl-job параметр index: " + event.getInteger("index"));
    System.out.println("xxl-job параметр total: " + event.getInteger("total"));
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/redkale-redkale.git
git@api.gitlife.ru:oschina-mirror/redkale-redkale.git
oschina-mirror
redkale-redkale
redkale-redkale
main