Временные задачи легко реализуются с помощью Spring Boot — подробное объяснение принципа

Временные задачи легко реализуются с помощью Spring Boot

  В современной веб-разработке запланированные задачи — очень распространенная функция. Spring Boot предоставляет нам простой способ справиться с этими задачами, нам нужно только добавить некоторые аннотации и конфигурацию для завершения. В этой статье будут представлены основные концепции и принципы задач синхронизации Spring Boot, а также способы использования и оптимизации конфигурации в конкретных бизнес-сценариях.

Основная концепция задач на время

  Запланированная задача предназначена для выполнения указанной задачи в указанный момент времени в соответствии с заранее определенным временным интервалом или частотой. Среди них планирование задач является ядром задач синхронизации.Его основной принцип реализации заключается в использовании таймера для регулярного запуска выполнения задач, а затем выполнения циклического выполнения или отложенного выполнения задач в соответствии с параметрами периодичности или задержки, установленными задачами. .

  В Spring Boot мы можем реализовать задачи синхронизации, добавив аннотации или конфигурацию XML. Среди них @Scheduledаннотация является наиболее часто используемым методом. С помощью этой аннотации мы можем установить такие параметры, как период задачи, задержка и фиксированная задержка; в то же время мы также можем передавать параметры задачи, устанавливать методы обработки исключений задачи и т. д. Таковы основные приемы реализации задач синхронизации.

Аннотация задачи Spring Boot Timing

  Spring Boot предоставляет @Scheduledаннотации для поддержки выполнения запланированных задач. Эту аннотацию можно добавить в метод и указать такие параметры, как период и задержка задачи. В конкретных бизнес-требованиях нам необходимо @Scheduledпонимать использование аннотаций и значений параметров, а также устанавливать и оптимизировать их в сочетании с реальными сценариями.

  @ScheduledАннотации поддерживают различные выражения времени, включая фиксированную скорость, фиксированный интервал и выражения cron. Среди них фиксированная скорость означает, что время начала задачи совпадает с последним интервалом времени завершения выполнения, что подходит для задач с высокой производительностью в реальном времени, а фиксированный интервал означает, что время запуска задачи такое же. в качестве интервала времени начала последнего выполнения этот метод подходит для случая, когда время, необходимое для выполнения каждой задачи, фиксировано. Выражения Cron являются более гибкими, а время выполнения и частота задач могут быть установлены в соответствии с конкретными потребностями, что очень подходит для сложных требований планирования задач.

cron-выражение

  Выражение Cron — это строковое выражение, используемое для представления времени, обычно используемое для планирования запланированных задач. Выражения Cron состоят из 6 или 7 частей, представляющих секунды, минуты, часы, дни, месяцы, недели и годы (необязательно) времени. Они расположены в следующем порядке:

秒(0-59) 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6)

Среди них, кроме недели и года, требуются и другие части. Для каждой части можно использовать следующее:

  • Любое значение:*
  • Указанное значение: 5или 3,8,10и т. д.
  • значение интервала:3-6
  • Значение периода: */5(то есть выполнять каждые 5 единиц)
  • Минимальное/Максимальное значение: 0/15(указывает, что оно начинается с минимального значения и выполняется каждые 15 единиц)

В поле недели числа 0 и 7 обозначают воскресенье. Некоторые реализации также поддерживают английские сокращения, в этом случае MON означает понедельник, TUE означает вторник, WED означает среду и так далее.

Вот несколько примеров выражений Cron:

  • 0 0/5 * * * ?: выполнять каждые пять минут
  • 0 0 0 * * SUN: Выполнять каждое воскресенье в полночь
  • 0 30 10-13 ? * WED: каждую среду с 10:00 до 13:30, каждые 30 минут
  • 0 0 12 ? * FRI#3: Выполняется в 12 часов дня в третью пятницу каждого месяца.

Подводя итог, можно сказать, что выражение Cron — это гибкий и мощный способ выражения времени, который можно использовать для выполнения различных сложных задач планирования времени. При использовании выражений Cron вам необходимо знать их различные синтаксисы, а также знать, как устанавливать и оптимизировать выражения Cron в соответствии с реальными потребностями.

Настройте пул потоков запланированных задач

  В Spring Boot мы можем реализовать задачи синхронизации через пул потоков. Соответствующую конфигурацию пула потоков запланированных задач можно задать в файле application.properties или application.yml. Вот некоторые важные свойства конфигурации:

  • spring.task.scheduling.pool.size : указывает размер пула потоков задач по умолчанию.
  • spring.task.scheduling.thread-name-prefix : установить префикс имени для потоков в пуле потоков задач.
  • spring.task.execution.shutdown.await-termination : установить, следует ли ждать выполнения всех задач перед закрытием пула потоков.По умолчанию установлено значение true, то есть ожидание
  • spring.task.execution.shutdown.await-termination-period : установить время ожидания для завершения задачи.
  • spring.task.execution.pool.max-size : указывает максимальное количество потоков в пуле потоков задач.
  • spring.task.execution.pool.queue-capacity : указывает емкость очереди пула потоков задач.
  • spring.task.execution.pool.core-size : указывает количество основных потоков в пуле потоков задач.

  По умолчанию Spring Boot реализует пул потоков запланированных задач по умолчанию на основе класса ThreadPoolTaskScheduler. Если вам нужно использовать другие типы пулов потоков, вы можете создать Bean типа TaskScheduler и внедрить его в экземпляр SchedulerConfigurer. Ниже приведен пример:

@Configuration
@EnableScheduling
public class AppConfig implements SchedulingConfigurer {
    
    

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    
    
        // 创建一个线程池
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        scheduler.setThreadNamePrefix("my-scheduled-task-pool-");

        // 注册线程池到注册器
        taskRegistrar.setTaskScheduler(scheduler);
    }
}

  В приведенной выше конфигурации мы создали пул потоков с именем «my-scheduled-task-pool-» и зарегистрировали его как планировщик задач. Если вам нужно реализовать более сложные задачи синхронизации, вы также можете использовать для этого другие функции, такие как интерфейс TaskExecutor.

Принцип и реализация задач на время

  Принцип реализации задач синхронизации Spring Boot в основном зависит от интерфейса TaskScheduler и интерфейса TaskExecutor, предоставляемых Spring Framework, Конкретный процесс выглядит следующим образом:

  1. Когда мы используем @Scheduledаннотации , Spring Boot инкапсулирует аннотированный метод в экземпляр класса ScheduledMethodRunnable.
  2. Затем Spring Boot выполняет задачу, получая класс реализации TaskScheduler из контекста приложения. Планировщик задач Spring по умолчанию — это ThreadPoolTaskScheduler, который можно создать и настроить с помощью файлов конфигурации.
  3. Запустите экземпляр Runnable, который мы только что создали, в пуле потоков. Когда задача запускается планировщиком, он вызывает метод запуска экземпляра ScheduledMethodRunnable.

  Кроме того, Spring Boot также предоставляет класс TaskRegistrar для поддержки операций регистрации, управления и отмены настраиваемых задач. Динамическое добавление задач и динамическая настройка политик синхронизации могут выполняться через объект TaskRegistrar. В то же время такие операции, как отмена или приостановка задач, также могут выполняться посредством операций с такими объектами, как ScheduledFuture или ScheduledTaskHolder.

  В общем, принцип реализации задач синхронизации Spring Boot включает планирование задач, управление состоянием выполнения задач и управление пулом потоков Среди них интерфейсы TaskScheduler и TaskExecutor являются основными интерфейсами для реализации функций задач синхронизации. Понимание этих принципов и деталей реализации может дать вам более глубокое понимание внутреннего механизма запланированных задач Spring Boot, чтобы вы могли более гибко использовать и оптимизировать функции запланированных задач.

Подведем итог

  Временные задачи — одна из распространенных функций в современной веб-разработке, и Spring Boot предоставляет нам очень удобный способ решения этих задач. В конкретном бизнес-сценарии нам необходимо понимать основные концепции и принципы запланированных задач, как использовать @Scheduledаннотации для реализации запланированных задач и как настроить пул потоков запланированных задач, а также глубокое понимание принципов реализации. запланированных задач. Благодаря этим исследованиям и практикам мы можем освоить методы реализации и оптимизации задач, рассчитанных на время, а также повысить надежность и производительность системы.

Guess you like

Origin blog.csdn.net/java_cpp_/article/details/130931421