xxljob在项目中的使用

1:下载源代码

在这里下载源代码到本地,然后导入到idea,等待其构建完成,然后我们来切换到2.0.2版本进行后续操作。

2:数据库操作

2.1:数据库初始化

doc/db/tables_xxl_job.sql数据库脚本在数据库中执行即可完成数据库初始化的工作。

2.2:修改db配置

修改xxl-job-admin/src/main/resources/application.properties文件,将其中的db配置修改为自己本地的信息即可。

3:启动

这是一个标准的springboot程序,可以直接通过xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java启动应用,当然可以以jar,或者war的形式来运行,这个后边再说。启动后通过地址http://127.0.0.1:8080/xxl-job-admin/访问,默认用户密码为admin/123456是在xxl-job-admin/src/main/resources/application.properties中配置的,登录后如下图:
xxljob在项目中的使用_第1张图片

4:定义执行器

我们使用的是springboot的方式来定义执行器,其中源码在这里下载源代码。

4.1:定义配置文件

# web port
server.port=8084
### xxl-job admin的地址,用来注册自己的信息
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### APPName,这里需要先通过xxl-job admin手动添加
xxl.job.executor.appname=xxl-job-executor-dongshidaddy
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9991
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则不生效;
xxl.job.executor.logretentiondays=-1

注意其中的xxl.job.executor.appname=xxl-job-executor-dongshidaddy需要先在xxl-job admin后台进行手动添加,如下:
xxljob在项目中的使用_第2张图片

4.2:定义执行器配置类

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

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

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

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

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

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

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

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

    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppName(appName);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }
}

4.3:启动

通过类dongshi.daddy.TestDebugRemoteTomcatApplication启动,启动后,查看xxl-job admin后台,如下,可以看到执行器的在线机器已经增加了一台了:
xxljob在项目中的使用_第3张图片
在idea中通过Edit Configurations再增加一个应用程序,主函数依然是dongshi.daddy.TestDebugRemoteTomcatApplication,然后修改配置文件中的端口号server.port,xxl.job.executor.port(执行器通信使用),保证端口号不冲突,再来注册一个执行器实例,完成后启动,如下,可以看到增加了一个在线的实例:
xxljob在项目中的使用_第4张图片

5:定义任务

5.1:定义任务

@JobHandler(value = "demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {

    @Override
    public ReturnT<String> execute(String param) throws Exception {
        System.out.println("demoJobHandler run param is: " + param);
        XxlJobLogger.log("XXL-JOB, Hello World→ → → →.");

        for (int i = 0; i < 2; i++) {
            XxlJobLogger.log("beat at:" + i);
            TimeUnit.SECONDS.sleep(2);
        }
        return SUCCESS;
    }
}

5.2:添加任务

如下图:
xxljob在项目中的使用_第5张图片

5.3:查看任务执行

如下是后台调用日志:

demoJobHandler run param is: i a param aaaaaaa!!!!!!!
demoJobHandler run param is: i a param aaaaaaa!!!!!!!
demoJobHandler run param is: i a param aaaaaaa!!!!!!!
demoJobHandler run param is: i a param aaaaaaa!!!!!!!

查看xxl后台日志:
xxljob在项目中的使用_第6张图片
xxljob在项目中的使用_第7张图片

6:以jar包方式运行

通过如下打出jar包:
xxljob在项目中的使用_第8张图片
这里注意修改端口号,不要和之前的冲突,然后通过java -jar运行即可:

xbdeMacBook-Air:temp xb$ java -jar xxl-job-admin-2.0.2.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.20.RELEASE)
 ...
 10:00:25.634 logback [main] INFO  o.s.b.c.e.t.TomcatEmbeddedServletContainer - Tomcat started on port(s): 8078 (http)
10:00:25.646 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 11.077 seconds (JVM running for 12.799)

然后访问测试:
xxljob在项目中的使用_第9张图片

7:admin的集群部署

直接启动多个实例,然后挂上nginx等负责复杂均衡就可以了,但是注意要共用一个mysql数据库

你可能感兴趣的:(杂,java,spring,boot,分布式)