xxljob任务实例
代码来源于官网
1.简单模式
@XxlJob("demoJobHandler")public ReturnT<String> demoJobHandler(String param) throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");for (int i = 0; i < 5; i++) {XxlJobHelper.log("beat at:" + i);TimeUnit.SECONDS.sleep(2);}// default successReturnT<String> msg=new ReturnT<>(200,"[执行成功]"+new Date());return msg;}
调度中心admin的任务运行模式要和@XxlJob值一致
运行结果:
2.分片广播任务
@XxlJob("shardingJobHandler")public void shardingJobHandler() throws Exception {// 分片参数int shardIndex = XxlJobHelper.getShardIndex(); //当前分片int shardTotal = XxlJobHelper.getShardTotal(); //总分片XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);// 业务逻辑for (int i = 0; i < shardTotal; i++) {if (i == shardIndex) {XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);} else {XxlJobHelper.log("第 {} 片, 忽略", i);}}}
1)单机多任务:配置多个任务,指定不同的参数,但是使用相同的jobHandler
2)多机分片:启动多个执行器管理实例,配置一个分片任务
3.命令行任务
@XxlJob("commandJobHandler")public void commandJobHandler() throws Exception {String command = XxlJobHelper.getJobParam();int exitValue = -1;BufferedReader bufferedReader = null;try {// command processProcessBuilder processBuilder = new ProcessBuilder();processBuilder.command(command);processBuilder.redirectErrorStream(true);Process process = processBuilder.start();//Process process = Runtime.getRuntime().exec(command);BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));// command logString line;while ((line = bufferedReader.readLine()) != null) {XxlJobHelper.log(line);}// command exitprocess.waitFor();exitValue = process.exitValue();} catch (Exception e) {XxlJobHelper.log(e);} finally {if (bufferedReader != null) {bufferedReader.close();}}if (exitValue == 0) {// default success} else {XxlJobHelper.handleFail("command exit value("+exitValue+") is failed");}}
创建commandJobHandler,写一个bat或者cmd文件,任务运行时任务参数
D:/a.bat
bat文件:
@echo off
start https://www.baidu.com/s?wd=xxljob
任务执行成功后自动跳转到相关网页:
4.跨平台http任务
@XxlJob("httpJobHandler")public void httpJobHandler() throws Exception {// param parseString param = XxlJobHelper.getJobParam();if (param==null || param.trim().length()==0) {XxlJobHelper.log("param["+ param +"] invalid.");XxlJobHelper.handleFail();return;}String[] httpParams = param.split("\n");String url =null;String method = null;// String data = null; //nullfor (String httpParam: httpParams) {if (httpParam.startsWith("url:")) {url = httpParam.substring(httpParam.indexOf("url:") + 4).trim();}if (httpParam.startsWith("method:")) {method = httpParam.substring(httpParam.indexOf("method:") + 7).trim().toUpperCase();}/*if (httpParam.startsWith("data:")) {data = httpParam.substring(httpParam.indexOf("data:") + 5).trim();}*/}// param validif (url==null || url.trim().length()==0) {XxlJobHelper.log("url["+ url +"] invalid.");XxlJobHelper.handleFail();return;}if (method==null || !Arrays.asList("GET", "POST").contains(method)) {XxlJobHelper.log("method["+ method +"] invalid.");XxlJobHelper.handleFail();return;}boolean isPostMethod = method.equals("POST");// requestHttpURLConnection connection = null;BufferedReader bufferedReader = null;try {// connectionURL realUrl = new URL(url);connection = (HttpURLConnection) realUrl.openConnection();// connection settingconnection.setRequestMethod(method);connection.setDoOutput(isPostMethod);connection.setDoInput(true);connection.setUseCaches(false);connection.setReadTimeout(5 * 1000);connection.setConnectTimeout(3 * 1000);connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");// do connectionconnection.connect();// data/* if (isPostMethod && data!=null && data.trim().length()>0) {DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());dataOutputStream.write(data.getBytes("UTF-8"));dataOutputStream.flush();dataOutputStream.close();}*/// valid StatusCodeint statusCode = connection.getResponseCode();if (statusCode != 200) {throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid.");}// resultbufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder result = new StringBuilder();String line;while ((line = bufferedReader.readLine()) != null) {result.append(line);}String responseMsg = result.toString();XxlJobHelper.log(responseMsg);return;} catch (Exception e) {XxlJobHelper.log(e);XxlJobHelper.handleFail();return;} finally {try {if (bufferedReader != null) {bufferedReader.close();}if (connection != null) {connection.disconnect();}} catch (Exception e2) {XxlJobHelper.log(e2);}}}
任务参数
执行成功后执行日志自动跳转
5.生命周期任务
@XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy")public void demoJobHandler2() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");}public void init(){logger.info("init");}public void destroy(){logger.info("destory");}
任务初始化与销毁时,支持自定义相关逻辑;
xxljob任务实例相关推荐
- xxl-job使用实例
1,先从gitee上拉代码https://gitee.com/xuxueli0323/xxl-job git clone https://gitee.com/xuxueli0323/xxl-job.g ...
- 学成在线项目开发技巧整理---第一部分
学成在线项目开发技巧整理---第一部分 1.数据字典 2.http-client远程测试插件,可以保存测试数据 3.三种跨域解决 4.具有多层级数据查询思路 5.Mybaits分页插件原理 6.根据文 ...
- 前端开发基础知识汇总
一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...
- Spring Cloud微服务系统架构的一些简单介绍和使用
Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...
- 【xxl-job】轻松实现分布式定时任务demo实例
[项目描述] 前段时间专门独立了一个spring boot服务,用于做和第三方erp系统的对接工作.此服务的第一个需求工作就是可以通过不同的规则,设置不同的定时任务,从而获取erp系统的商品数据.所以 ...
- xxl-job的使用实例
本文来写篇xxl-job的使用实例 文章目录 概述 使用实例 准备工作 控制面板 添加执行器和任务 本文小结 概述 在启动xxl-job服务端以后,打开控制面板 使用实例 准备工作 创建一个sprin ...
- 分布式任务调度平台 XXL-JOB
https://opentalk.upyun.com/303.html 2017 年 10 月 22 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...
- docker部署xxl-job 通用反射执行器
原因 最近在公司写一些job,公司使用的是spring boot提供的注解形式实现的. 这样在自测的时候很麻烦,而且测试提测的时候需要修改cron表达式->提交git->jenkins打包 ...
- xxljob 配置文件_SpringBoot整合Xxl-Job的完整步骤记录
一.下载Xxl-Job源代码并导入本地并运行 1.使用Idea或Eclipse导入 2.执行sql脚本(红色标记处) 3.运行xxl-job-admin(xxl-job后台管理,主要方便管理各种各样的 ...
最新文章
- 《Nature》发文:好导师的16个标准
- mongodb update
- 内核中的UDP socket流程(7)——udp_sendmsg
- mysql 复制功能_MySQL实现主从复制功能
- Darwin Streaming Server 安装流程
- Sublime Text 3快捷键
- mc服务器tp到指定,我的世界怎么把别人tp到指定地点 | 手游网游页游攻略大全
- OverFeat,分类、定位、检测
- Cocos Creator ts版本使用protobuf
- 软件需求收集、挖掘和分析方法
- 《Intriguing Properties of Contrastive Losses》阅读笔记
- API 的理解与使用- 键管理
- php黑名单绕过,文件上传漏洞之黑名单检测绕过
- Semantic Parsing via Staged Query Graph Generation: Question Answering with Knowledge Base(笔记)
- charles安装证书并信任证书,仍然无法获取手机上的请求
- python读xml文件生成.h头文件_Python创建xml文件示例
- pdf.js使用(在线预览pdf文件)
- DSP公司如何利用街道级IP地理定位提升广告投放ROI
- 如何在mac eclipse引入win版本eclipse的android项目
- 超前进位加法器(Verilog数字IC)