SpringBoot integra xxl-job para realizar la gestión de tareas de tiempo

inserte la descripción de la imagen aquí

Resumen

XXL-Job es un poderoso marco de programación de tareas distribuidas, que puede aprovecharse más después de integrar Spring Boot. Proporciona varias ventajas, como la programación de tareas distribuidas, el informe de ejecución de tareas, el centro de programación de tareas, buena escalabilidad, implementación de clústeres distribuidos, monitoreo y alarmas. Además, XXL-Job es de código abierto y gratuito, y el código fuente y la documentación detallada se pueden obtener en GitHub. La documentación detallada y las pautas de uso se pueden encontrar en la documentación oficial de XXL-Job.

Ventajas del trabajo XXL

Al integrar XXL-Job y Spring Boot, las ventajas de XXL-Job incluyen:

  1. Programación de tareas distribuidas : XXL-Job proporciona la capacidad de programación de tareas distribuidas, que puede ejecutar tiempos, ciclos, CRON y otras tareas en múltiples servidores al mismo tiempo.

  2. Informe de ejecución de tareas : XXL-Job proporciona un informe de ejecución de tareas, donde puede ver el estado de ejecución de tareas, registros de ejecución, resultados de tareas, etc., para facilitar la resolución de problemas y monitorear el estado de ejecución de tareas.

  3. Centro de programación de tareas : XXL-Job está equipado con un centro de programación de tareas, que puede configurar y administrar tareas a través de la interfaz web, admite la modificación dinámica de la configuración de tareas y realiza una gestión y operación visual.

  4. Buena escalabilidad : XXL-Job puede integrar fácilmente varias lógicas comerciales y procesamiento de tareas escribiendo JobHandler, y admite el desarrollo y la gestión de trabajos personalizados.

  5. Implementación de clústeres distribuidos : XXL-Job admite la implementación de clústeres distribuidos, proporciona escalabilidad y alta disponibilidad, y se adapta a escenarios de programación de tareas a gran escala y de alta concurrencia.

  6. Monitoreo y alarmas : XXL-Job proporciona una gran cantidad de indicadores de monitoreo y mecanismos de alarma, que pueden detectar anomalías y errores en la ejecución de tareas de manera oportuna y proporcionar recordatorios a través de correos electrónicos, mensajes de texto, etc.

  7. Código abierto y gratuito : XXL-Job es un proyecto de código abierto, de uso gratuito y obtenga el código fuente y la documentación en GitHub.

Puede encontrar documentación más detallada y una guía de uso en la documentación oficial de XXL-Job . Este documento contiene instrucciones detalladas y códigos de muestra para la instalación e implementación de XXL-Job, configuración de tareas, estrategia de programación, informe de ejecución de tareas, etc.

Trabajo XXL integrado

entorno operativo

  • Sistema MAC10.15
  • Maven3.8.6
  • jdk1.8
  • mysql8.0
  • IDEA2021

Ejecutar trabajo XXL

1. Descargar Trabajo XXL

En referencia a la documentación oficial, necesitamos descargar un proyecto xxl-job.
Gitee
Github

2. Crear una base de datos e importar datos

El directorio del archivo de código fuente descargado de Gitee /xxl-job/doc/dbtiene un archivo SQL a continuación tables_xxl_job.sql, y luego crea una base de datos en la base de datos xxl-job. Aquí, puedo modificar el nombre de la base de datos por mí mismo como predeterminado del sistema; luego ejecute el archivo SQL para importar la tabla a continuación.
inserte la descripción de la imagen aquí

3. Modificar la configuración de la conexión a la base de datos

La conexión de la base de datos se configura en el directorio del proyecto.Si xxl-job-admin/src/main/resources/application.propertiesnecesita configurar el buzón de envío, debe configurar spring.mailtoda la información de configuración.
inserte la descripción de la imagen aquí

4. Iniciar el proyecto

Después de iniciar el proyecto en IDEA, visite: http://localhost:8080/xxl-job-admin , cuenta predeterminada: admin, contraseña: 123456
inserte la descripción de la imagen aquí
Después de iniciar sesión, la página de inicio:
inserte la descripción de la imagen aquí
el seguimiento necesita configurar el ejecutor y todas las tareas se completan en esta página.

integración de proyectos

1. Dependencias de importación

<!-- xxl-job-core依赖 -->
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>

2. Configurar la información de application.yml

# Xxl-Job分布式定时任务调度中心
xxl:
  job:
    ### 执行器通讯TOKEN [选填]:非空时启用;
    accessToken:
    admin:
      ### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
      addresses: http://127.0.0.1:8080/xxl-job-admin
    executor:
      ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
      address:
      ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
      appname: ddz-job-executor
      ### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      ip:
      ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
      port: 9999
      ### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: /User/ddz/data/applogs/xxl-job/jobhandler
      ### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      logretentiondays: 30

3. Clase de configuración XxlJobConfig

Esta clase de configuración está en el directorio del proyecto que descargamos: xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.javapodemos usarla después de copiarla.

@Configuration
public class XxlJobConfig {
    
    
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

    @Value("${xxl.job.executor.address}")
    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
    
    
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }

    /**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */
}

4. Crear una demostración de prueba de la tarea XxlJobTest

@Slf4j
@Component
@RequiredArgsConstructor
public class XxlJobTest {
    
    

    @XxlJob("xxlJobTest")
    public ReturnT<String> xxlJobTest(String date) {
    
    
        // 获取任务参数
        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
        String jobParam = xxlJobContext.getJobParam();
        log.info("---------xxlJobTest定时任务执行成功--------{}", jobParam);
        return ReturnT.SUCCESS;
    }
}

prueba de funcionamiento

añadir ejecutor

Vaya a http://localhost:8080/xxl-job-admin e inicie sesión.
inserte la descripción de la imagen aquí
Elegimos que el método de registro sea automático, y es posible que la máquina en línea no se pueda obtener después de completar la adición; en este momento, solo necesitamos reiniciar nuestro propio proyecto para obtener el éxito automáticamente.
inserte la descripción de la imagen aquí

agregar tarea

inserte la descripción de la imagen aquí

realizar tareas

Después de que comencemos la tarea, podemos ver el registro de ejecución en el registro de programación.
inserte la descripción de la imagen aquí

Ver registros de programación

inserte la descripción de la imagen aquí
En este punto, su aplicación Spring Boot tiene integrado XXL-Job. Cuando el activador configurado cumple las condiciones, el ejecutor de trabajos xxl llamará automáticamente al método JobHandler correspondiente para el procesamiento de tareas.

Supongo que te gusta

Origin blog.csdn.net/weixin_45626288/article/details/131561138
Recomendado
Clasificación