Spring интегрирует Quartz для реализации динамических задач синхронизации

задняя часть GitHub Spring maven

Spring интегрирует Quartz для реализации динамических задач синхронизации

Адрес репозитория кода:GitHub.com/ Потный…

  1. Динамически добавлять запланированные задачи
  2. Изменить запланированные задачи
  3. Приостановить запланированное задание
  4. Возобновить приостановленную задачу cron

Для чего можно использовать кварц?
Quartz — это система планирования задач. Например, если вы столкнулись с такой проблемой

Я хочу иметь автоматическое погашение кредитной карты 25-го числа каждого месяца

Я хочу отправлять анонимные поздравительные открытки богине моей любви 1 апреля каждого года.

Я хочу каждые 1 час делать резервную копию своих любимых боевиков и учебных заметок на облачный диск

Эти вопросы суммируют: делайте что-то в обычное время. И условия срабатывания времени могут быть очень сложными (например, 17:50 в последний рабочий день каждого месяца), настолько сложными, что для этого требуется специальный фреймворк. Кварц здесь для этого: вы даете ему определение условия запуска, и он отвечает за запуск соответствующего задания для работы в момент времени.

Но во многих случаях мы часто сталкиваемся с задачами, которые необходимо динамически добавлять или изменять, но компоненты задач синхронизации, предоставленные в spring, могут управлять временем задач синхронизации и включением или остановкой задач только путем изменения конфигурации триггера в xml. Принося нам удобство, он также теряет гибкость динамической настройки задач. В идеале добавлять, удалять и изменять конфигурацию динамических задач при интеграции с Spring.

ps: проект основан на Maven

Демонстрационный метод: развертывание с помощью tomcat

1. 查看已经部署的定时任务
http://localhost:8080/list
2. 初始化定时任务
http://localhost:8080/init
3. 暂停定时任务
http://localhost:8080/stop
4. 恢复暂停的定时任务
http://localhost:8080/resume

конфигурация spring/spring.xml

  1. традиционный способ
    <!-- 使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法-->
    <bean id="taskJob" class="cn.huashantech.lawyer.service.DataConversionTask"/>

    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!--false表示等上一个任务执行完后再开启新的任务-->
        <property name="concurrent" value="false"/>
        <property name="targetObject" ref="taskJob"/>
        <property name="targetMethod" value="run"/>
    </bean>

    <!--  调度触发器 -->
    <bean id="myTrigger"
          class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetail"/>
        <property name="cronExpression" value="0/5 * * * * ?"/>
    </bean>
  1. Конфигурация, необходимая для динамического режима
<!-- 调度工厂 -->
    <bean  id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

основной класс

cn.huashantech.lawyer.service.DynamicTask.Main

//以注解方式注入调度工厂
@Autowired
private Scheduler scheduler;

Для подробного объяснения Quartz, пожалуйста, обратитесь к:блог woo woo woo.cn на.com/drift-ice/afraid…

Источник ссылки:blog.CSDN.net/U014723529/…