Spring интегрирует Quartz для реализации динамических задач синхронизации
Адрес репозитория кода:GitHub.com/ Потный…
- Динамически добавлять запланированные задачи
- Изменить запланированные задачи
- Приостановить запланированное задание
- Возобновить приостановленную задачу 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
- традиционный способ
<!-- 使用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>
- Конфигурация, необходимая для динамического режима
<!-- 调度工厂 -->
<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/…