From d13130824d88d1b3a80c0f4e4a31ef04ff2607ec Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 29 Mar 2020 03:04:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=99=A8=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=9A=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9=20=E2=80=9D=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=20/=20xxl.job.executor.address=E2=80=9C?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=85=88=E4=BD=BF=E7=94=A8=E8=AF=A5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BD=9C=E4=B8=BA=E6=B3=A8=E5=86=8C=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=EF=BC=8C=E4=B8=BA=E7=A9=BA=E6=97=B6=E4=BD=BF=E7=94=A8=E5=86=85?= =?UTF-8?q?=E5=B5=8C=E6=9C=8D=E5=8A=A1=20=E2=80=9DIP:PORT=E2=80=9C=20?= =?UTF-8?q?=E4=BD=9C=E4=B8=BA=E6=B3=A8=E5=86=8C=E5=9C=B0=E5=9D=80=E3=80=82?= =?UTF-8?q?=E4=BB=8E=E8=80=8C=E6=9B=B4=E7=81=B5=E6=B4=BB=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81docker=E6=89=A7=E8=A1=8C=E5=99=A8=E5=8A=A8=E6=80=81ip?= =?UTF-8?q?=E5=92=8C=E5=8A=A8=E6=80=81=E6=98=A0=E5=B0=84=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/XXL-JOB官方文档.md | 13 ++++++------ .../xxl/job/core/executor/XxlJobExecutor.java | 20 ++++++++++++------- .../executor/core/config/XxlJobConfig.java | 10 +++++++--- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 7b5177ce..b6feb7a5 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -1729,12 +1729,13 @@ url: http://www.xxx.com method: get 或 post data: post-data ``` -- 15、[迭代中]自定义失败重试时间间隔; -- 16、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息; -- 17、[迭代中]新增执行器描述、任务描述属性; -- 18、[迭代中]任务执行一次的时候指定IP; -- 19、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务; -- 20、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败; +- 15、执行器注册逻辑优化:新增配置项 ”注册地址 / xxl.job.executor.address“,优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持docker执行器动态ip和动态映射端口问题。 +- 16、[迭代中]自定义失败重试时间间隔; +- 17、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息; +- 18、[迭代中]新增执行器描述、任务描述属性; +- 19、[迭代中]任务执行一次的时候指定IP; +- 20、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务; +- 21、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败; ### TODO LIST diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index be17f71c..7684a550 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -32,28 +32,32 @@ public class XxlJobExecutor { // ---------------------- param ---------------------- private String adminAddresses; + private String accessToken; private String appName; + private String address; private String ip; private int port; - private String accessToken; private String logPath; private int logRetentionDays; public void setAdminAddresses(String adminAddresses) { this.adminAddresses = adminAddresses; } + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } public void setAppName(String appName) { this.appName = appName; } + public void setAddress(String address) { + this.address = address; + } public void setIp(String ip) { this.ip = ip; } public void setPort(int port) { this.port = port; } - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } public void setLogPath(String logPath) { this.logPath = logPath; } @@ -81,7 +85,7 @@ public class XxlJobExecutor { // init executor-server port = port>0?port: NetUtil.findAvailablePort(9999); ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp(); - initRpcProvider(ip, port, appName, accessToken); + initRpcProvider(address, ip, port, appName, accessToken); } public void destroy(){ // destory executor-server @@ -143,10 +147,12 @@ public class XxlJobExecutor { // ---------------------- executor-server (rpc provider) ---------------------- private XxlRpcProviderFactory xxlRpcProviderFactory = null; - private void initRpcProvider(String ip, int port, String appName, String accessToken) throws Exception { + private void initRpcProvider(String address, String ip, int port, String appName, String accessToken) throws Exception { // init, provider factory - String address = IpUtil.getIpPort(ip, port); + if (address==null || address.trim().length()==0) { + address = IpUtil.getIpPort(ip, port); // registry-address:default use address to registry , otherwise use ip:port if address is null + } Map serviceRegistryParam = new HashMap(); serviceRegistryParam.put("appName", appName); serviceRegistryParam.put("address", address); diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java index 0ac3a3dd..a61e8465 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java @@ -19,18 +19,21 @@ public class XxlJobConfig { @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.accessToken}") - private String accessToken; - @Value("${xxl.job.executor.logpath}") private String logPath; @@ -44,6 +47,7 @@ public class XxlJobConfig { XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppName(appName); + xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken);