Ver Fonte

refactor(xxl-job):调整包结构和示例代码

- 更新文档中的示例代码包名
- 重构 xxl-job-executor-sample-springboot项目的包结构
- 删除 xxl-job-executor-samples/xxl-job-executor-sample-springboot-
xuxueli há 2 meses atrás
pai
commit
bcccdf64f3

+ 1 - 1
doc/XXL-JOB官方文档.md

@@ -1160,7 +1160,7 @@ Bean模式任务,支持基于方法的开发方式,每个任务对应一个
     4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
 
 ```
-// 可参考Sample示例执行器中的 "com.xxl.job.executor.service.jobhandler.SampleXxlJob" ,如下:
+// 可参考Sample示例执行器中的 "com.xxl.job.executor.jobhandler.SampleXxlJob" ,如下:
 @XxlJob("demoJobHandler")
 public void demoJobHandler() throws Exception {
     XxlJobHelper.log("XXL-JOB, Hello World.");

+ 1 - 1
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/config/XxlJobConfig.java

@@ -1,4 +1,4 @@
-package com.xxl.job.executor.core.config;
+package com.xxl.job.executor.config;
 
 import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
 import org.slf4j.Logger;

+ 0 - 0
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/mvc/controller/IndexController.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/controller/IndexController.java


+ 0 - 0
xxl-job-executor-samples/xxl-job-executor-sample-springboot-ai/src/main/java/com/xxl/job/executor/jobhandler/SampleXxlJob.java → xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/jobhandler/SampleXxlJob.java


+ 0 - 271
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java

@@ -1,271 +0,0 @@
-package com.xxl.job.executor.service.jobhandler;
-
-import com.xxl.job.core.context.XxlJobHelper;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.util.GsonTool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-/**
- * XxlJob开发示例(Bean模式)
- *
- * 开发步骤:
- *      1、任务开发:在Spring Bean实例中,开发Job方法;
- *      2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
- *      3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;
- *      4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
- *
- * @author xuxueli 2019-12-11 21:52:51
- */
-@Component
-public class SampleXxlJob {
-    private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
-
-
-    /**
-     * 1、简单任务示例(Bean模式)
-     */
-    @XxlJob("demoJobHandler")
-    public void demoJobHandler() 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 success
-    }
-
-
-    /**
-     * 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);
-            }
-        }
-
-    }
-
-
-    /**
-     * 3、命令行任务
-     *
-     *  参数示例:"ls -a" 或者 "pwd"
-     */
-    @XxlJob("commandJobHandler")
-    public void commandJobHandler() throws Exception {
-        String command = XxlJobHelper.getJobParam();
-        int exitValue = -1;
-
-        BufferedReader bufferedReader = null;
-        try {
-            // valid
-            if (command==null || command.trim().length()==0) {
-                XxlJobHelper.handleFail("command empty.");
-                return;
-            }
-
-            // command split
-            String[] commandArray = command.split(" ");
-
-            // command process
-            ProcessBuilder processBuilder = new ProcessBuilder();
-            processBuilder.command(commandArray);
-            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 log
-            String line;
-            while ((line = bufferedReader.readLine()) != null) {
-                XxlJobHelper.log(line);
-            }
-
-            // command exit
-            process.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");
-        }
-
-    }
-
-
-    /**
-     * 4、跨平台Http任务
-     *
-     *  参数示例:
-     *  <pre>
-     *      {
-     *          "url": "http://www.baidu.com",
-     *          "method": "get",
-     *          "data": "hello world"
-     *      }
-     *  </pre>
-     */
-    @XxlJob("httpJobHandler")
-    public void httpJobHandler() throws Exception {
-
-        // param
-        String param = XxlJobHelper.getJobParam();
-        if (param==null || param.trim().length()==0) {
-            XxlJobHelper.log("param["+ param +"] invalid.");
-
-            XxlJobHelper.handleFail();
-            return;
-        }
-
-        // param parse
-        String url;
-        String method;
-        String data;
-        try {
-            Map<String, String> paramMap =GsonTool.fromJson(param, Map.class);
-            url = paramMap.get("url");
-            method = paramMap.get("method");
-            data = paramMap.get("data");
-        } catch (Exception e) {
-            XxlJobHelper.log(e);
-            XxlJobHelper.handleFail();
-            return;
-        }
-
-        // param valid
-        if (url==null || url.trim().length()==0) {
-            XxlJobHelper.log("url["+ url +"] invalid.");
-
-            XxlJobHelper.handleFail();
-            return;
-        }
-        if (method==null || !Arrays.asList("GET", "POST").contains(method.toUpperCase())) {
-            XxlJobHelper.log("method["+ method +"] invalid.");
-
-            XxlJobHelper.handleFail();
-            return;
-        }
-        method = method.toUpperCase();
-        boolean isPostMethod = method.equals("POST");
-
-        // request
-        HttpURLConnection connection = null;
-        BufferedReader bufferedReader = null;
-        try {
-            // connection
-            URL realUrl = new URL(url);
-            connection = (HttpURLConnection) realUrl.openConnection();
-
-            // connection setting
-            connection.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 connection
-            connection.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 StatusCode
-            int statusCode = connection.getResponseCode();
-            if (statusCode != 200) {
-                throw new RuntimeException("Http Request StatusCode(" + statusCode + ") Invalid.");
-            }
-
-            // result
-            bufferedReader = 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("destroy");
-    }
-
-
-}