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

OSCHINA-MIRROR/xiao-mading-xxl-job-task-spring-boot-starter

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

Динамическое управление задачами на бэкенде для xxl-job, готовое к использованию

Введение

В связи с необходимостью разработки универсальной системы учёта, возникла потребность в динамическом управлении задачами для различных участников процесса. В частности, необходимо учитывать особенности таких участников:

  • финансовый учёт:
    • например, для WeChat — возможно, только после 7 часов вечера можно загрузить данные за предыдущий день;
    • для Tonglian — возможно, только после 8 часов вечера можно скачать данные за предыдущий день.
  • бизнес-учёт: различные бизнес-операции требуют гибкой настройки времени учёта.

Для реализации этой функции был выбран инструмент xxl-job. Однако невозможно вручную создавать задачи для каждого нового участника процесса. Поэтому была разработана следующая схема: все задачи учёта используют один и тот же исполнитель, а различные сценарии учёта используют разные задачи и различаются по параметрам задач. Для этого используется API xxl-job-admin, который позволяет динамически добавлять, изменять, запускать и останавливать задачи. Таким образом, при подключении нового участника процесса достаточно добавить новую задачу в процессе настройки, чтобы реализовать планирование учёта.

Бэкенд xxl-job: результаты

На рисунке представлены результаты работы бэкенда xxl-job.

Функции бэкенда:

  • имитация входа в систему xxl-job;
  • динамическое добавление, регистрация и поиск исполнителей xxl-job;
  • динамическое создание, обновление, запуск и остановка задач xxl-job.

Особенности проекта

  • Для доступа к API xxl-job-admin требуется вход в систему. В этом проекте реализована имитация входа и получение cookie, которые затем используются для доступа к API.
  • Доступ к интерфейсу унифицирован и легко расширяется.
  • Проект упакован как spring-boot-starter для быстрого внедрения.
  • Все интерфейсы xxl-job в этом проекте прошли модульное тестирование.

Как использовать

  1. Скачайте исходный код.
  2. Соберите jar-файл и поместите его в репозиторий Maven.
  3. Добавьте зависимость:
<!--Например:-->
<dependency>
    <groupId>com.mading</groupId>
    <artifactId>xxl-job-task-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
  1. Настройте xxl-job:
# Префикс можно изменить в XxlJobProperties.
xxl.adminAddresses=http://127.0.0.1:8080/xxl-job-admin
xxl.appname=${spring.application.name}
xxl.logretentiondays=30
xxl.port=9999
xxl.accessToken=289d5e0b-e83b-40a1-87ec-fd7b2335f15c
  1. Используйте:
package com.mdw.xxl.job.task;

@Slf4j
@SpringBootTest(classes = XxlJobAutoConfiguration.class)
@RunWith(SpringRunner.class)
public class XxlJobTest {

    @Autowired
    private XxlJobProperties xxlJobProperties;
    @Autowired
    private XxlJobClient xxlJobClient;

    // Идентификатор исполнителя
    private static final Integer jobGroup = 3;
    // Идентификатор задачи
    private static final Integer jobId = 10;

    @Test
    public void testAddJob() {
        String executorHandler = "checkAccountTask";
        String author = "马丁丁";

        JobAddRequest request = new JobAddRequest();
        request.setJobGroup(jobGroup)
                .setJobDesc("商户-微信对账")
                .setJobCron("0 0 7 * * ?")
                .setExecutorHandler(executorHandler)
                .setExecutorParam("paycenter-wx")
                .setAuthor(author);
        String result = xxlJobClient.execute(request);
        log.info(result);

        JobAddRequest request2 = new JobAddRequest();
        request2.setJobGroup(jobGroup)
                .setJobDesc("商户-支付宝对账")
                .setJobCron("0 0 4 * * ?")
                .setExecutorHandler(executorHandler)
                .setExecutorParam("paycenter-zfb")
                .setAuthor(author);
        String result2 = xxlJobClient.execute(request2);
        log.info(result2);
    }
}

Ссылки

Дополнительная информация о динамическом добавлении задач в xxl-job доступна здесь: https://blog.csdn.net/niugang0920/article/details/117601547.

Комментарии ( 0 )

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

Введение

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

Обновления

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

Участники

все

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

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