为什么80%的码农都做不了架构师?>>>
xxl-job这玩意一般都和elastic job比较,区别就不多说了,玩这个最主要看中文档齐全,版本一直更新,社区活跃。
http://www.xuxueli.com/xxl-job
首先去官网下载代码,其余就不多说了,因为许雪里大佬的文档写的已经介绍的非常不错了。
com.xuxueli xxl-job-core 2.0.2
1、首先执行数据库脚本,这是基于mysql的,就不用多说了,执行完脚本将xxl-job-admin的配置文件数据库连接修改成你的数据库即可。
2、把你的xxl-job-admin运行起来,然后在浏览器http://localhost:8080/xxl-job-admin即可看到页面。
3、开始搞你的执行器,需要先继承IJobHandler,然后重写execute方法,我还是直接贴代码吧。
@Component @JobHandler(value = "pushdata") public class PushDataTask extends IJobHandler { @Override public ReturnTexecute(String param) throws Exception { System.out.println("执行完成" + param); return SUCCESS; } }
4、一定注意添加配置文件,配置文件内容如下。
xxl: job: admin: addresses: http://192.168.1.1:8080/xxl-job-admin executor: appname: push-data ip: port: 9999 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: -1 accessToken:
5、这样你以为完了?那你就真完了,运行的时候会报错,错误信息:
xxl-job trigger error, please check if the executor[192.168.1.1:9999] is running.
what???执行器明明启动了为毛运行报错???因为你少的配置项,也就是需要一个配置类。上代码就明白了。
@Configuration public class XxlJobConfig { @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() { 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; } }
然后完事了。admin调度中心先添加一个执行器,然后在添加一个任务调度器即可,其余内容没啥好介绍的。
做集群处理的时候,在添加执行器的地方,添加多个IP+端口即可,逗号隔开。
踩坑:
1、下载下来代码死活跑不起来说丢失包,出现这问题毫无疑问是引用包问题,代码是没问题,找到你本地maven仓库删掉,然后重新下载。
2、就上上面错误,说执行器运行不起来,其实是丢失配置信息。