Динамическое управление задачами на бэкенде для xxl-job, готовое к использованию
Введение
В связи с необходимостью разработки универсальной системы учёта, возникла потребность в динамическом управлении задачами для различных участников процесса. В частности, необходимо учитывать особенности таких участников:
Для реализации этой функции был выбран инструмент xxl-job. Однако невозможно вручную создавать задачи для каждого нового участника процесса. Поэтому была разработана следующая схема: все задачи учёта используют один и тот же исполнитель, а различные сценарии учёта используют разные задачи и различаются по параметрам задач. Для этого используется API xxl-job-admin, который позволяет динамически добавлять, изменять, запускать и останавливать задачи. Таким образом, при подключении нового участника процесса достаточно добавить новую задачу в процессе настройки, чтобы реализовать планирование учёта.
Бэкенд xxl-job: результаты
На рисунке представлены результаты работы бэкенда xxl-job.
□ Функции бэкенда:
Особенности проекта
Как использовать
<!--Например:-->
<dependency>
<groupId>com.mading</groupId>
<artifactId>xxl-job-task-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
# Префикс можно изменить в 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
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 )