Spring-dynamic-job
SpringBoot и Quartz: пример интеграции. В примере представлены фиксированные и динамические задания. Предоставляются соответствующие инструменты.
Проект управляется с помощью Maven, это SpringBoot-проект.
Используемые технологии и версии:
Использование
Проверьте код, откройте проект в IDE (например, IDEA) как Maven-проект.
Измените файл application.properties, чтобы указать информацию о подключении к базе данных. Создайте базу данных (по умолчанию — sdj), запустите файл others/quartz_mysql_innodb.sql для инициализации базы данных.
Запустите класс запуска SDJApplication.java.
После успешного запуска вы можете получить доступ к http://localhost:8080 в браузере. Здесь можно добавлять или удалять динамические задания, а также просматривать выходные журналы фиксированных заданий в консоли.
Основной объект проекта — DynamicSchedulerFactory. Этот проект уже используется в проекте HeartBeat. Для получения дополнительной информации о его использовании обратитесь к этому проекту.
Класс определения динамического задания — DynamicJob. При динамическом управлении заданиями класс должен быть подклассом этого класса (см. TestDynamicJob). Пример класса фиксированного задания — TestFixedJobDetailBean. Он загружается при запуске и выполняется постоянно. Дополнительные операции см. в классе TestServiceImpl.
Если вы не используете базу данных (храните информацию о заданиях в памяти), отмените конфигурацию dataSource и ссылки на него.
Подробное объяснение
Задания делятся на два типа: фиксированные (fixed) и динамические (dynamic).
Фиксированные задания выполняются в определённое время (например, ежедневно в 2 часа ночи или каждые 30 секунд). Для реализации конкретных задач обратитесь к классу TestFixedJobDetailBean. Конфигурация задания (job) выполняется в файле SDJConfiguration.java (см. комментарии). Настройте JobDetail (см. fixedJobDetail), Trigger (см. fixedTrigger, обратите внимание на значение cronExpression) и добавьте JobDetail и Trigger в schedulerFactory (см. schedulerFactory). Вы можете использовать класс CronExpression.java для проверки выражения cronExpression, написанного вручную.
Динамические задания добавляются во время работы системы (например, пользовательские задачи синхронизации).
Для реализации конкретных задач обратитесь к классу TestDynamicJob. Чтобы использовать динамическое задание, создайте соответствующий объект DynamicJob (например, для тестирования):
// Создание динамического JOB, тестовое использование
private DynamicJob createDynamicJob() {
return new DynamicJob("test-")
// Динамическое задание cron, выполняется каждые 20 секунд
.cronExpression("0/20 * * * * ?")
.target(TestDynamicJob.class);
}
Имя задания должно быть конкретным, выражение cron обычно генерируется на основе объекта времени (Date), а target относится к новому объекту, созданному на первом шаге. Если у задания есть параметры, добавьте соответствующее имя параметра и значение (можно добавить несколько параметров):
dynamicJob.addJobData("mailGuid", UUID.randomUUID().toString()); // Передача параметра
В классе реализации задания вы можете получить его через context:
final String mailGuid = context.getMergedJobDataMap().getString("mailGuid");
Зарегистрируйте задание в DynamicSchedulerFactory:
DynamicSchedulerFactory.registerJob(dynamicJob);
Динамическое, но немедленное выполнение задания выполняется только один раз (подходит для асинхронной синхронизации операций). Отличие от второго шага заключается в том, что при создании объекта DynamicJob установите startNow в true (не устанавливайте cronExpression).
История проекта
Помощь и улучшение
Вы можете найти связанные блоги по адресу: http://blog.csdn.net/monkeyking1987/article/details/42173277. Если вы не можете решить проблему, вы можете отправить электронное письмо на адрес shengzhao@shengzhaoli.com для обсуждения.
Если в процессе использования проекта вы обнаружите какие-либо ошибки или лучшие предложения, рекомендуется отправить их в Issues проекта: https://gitee.com/mkk/spring-dynamic-job/issues. Я буду продолжать следить за проектом и постоянно улучшать его.
Следите за другими моими проектами с открытым исходным кодом по адресу https://andaily.com/my_projects.html.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )