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

OSCHINA-MIRROR/mkk-spring-dynamic-job

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Spring-dynamic-job

SpringBoot и Quartz: пример интеграции. В примере представлены фиксированные и динамические задания. Предоставляются соответствующие инструменты.

Проект управляется с помощью Maven, это SpringBoot-проект.

Используемые технологии и версии:

  • OpenJDK (17);
  • SpringBoot (3.1.5);
  • Quartz (2.3.2);
  • mysql-connector-j (8.0.33);
  • Maven (3.6.0).

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

  1. Проверьте код, откройте проект в IDE (например, IDEA) как Maven-проект.

  2. Измените файл application.properties, чтобы указать информацию о подключении к базе данных. Создайте базу данных (по умолчанию — sdj), запустите файл others/quartz_mysql_innodb.sql для инициализации базы данных.

  3. Запустите класс запуска SDJApplication.java.

  4. После успешного запуска вы можете получить доступ к 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 )

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

Введение

Описание недоступно Развернуть Свернуть
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mkk-spring-dynamic-job.git
git@api.gitlife.ru:oschina-mirror/mkk-spring-dynamic-job.git
oschina-mirror
mkk-spring-dynamic-job
mkk-spring-dynamic-job
master