执行器注册逻辑优化:新增配置项 ”注册地址 / xxl.job.executor.address“,优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持docker执行器动态ip和动态映射端口问题。

This commit is contained in:
xuxueli 2020-03-29 03:04:54 +08:00
parent 239200e52c
commit d13130824d
3 changed files with 27 additions and 16 deletions

View File

@ -1729,12 +1729,13 @@ url: http://www.xxx.com
method: get 或 post method: get 或 post
data: post-data data: post-data
``` ```
- 15、[迭代中]自定义失败重试时间间隔; - 15、执行器注册逻辑优化新增配置项 ”注册地址 / xxl.job.executor.address“优先使用该配置作为注册地址为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持docker执行器动态ip和动态映射端口问题。
- 16、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息; - 16、[迭代中]自定义失败重试时间间隔;
- 17、[迭代中]新增执行器描述、任务描述属性; - 17、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息;
- 18、[迭代中]任务执行一次的时候指定IP - 18、[迭代中]新增执行器描述、任务描述属性;
- 19、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务; - 19、[迭代中]任务执行一次的时候指定IP
- 20、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败; - 20、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务;
- 21、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败;
### TODO LIST ### TODO LIST

View File

@ -32,28 +32,32 @@ public class XxlJobExecutor {
// ---------------------- param ---------------------- // ---------------------- param ----------------------
private String adminAddresses; private String adminAddresses;
private String accessToken;
private String appName; private String appName;
private String address;
private String ip; private String ip;
private int port; private int port;
private String accessToken;
private String logPath; private String logPath;
private int logRetentionDays; private int logRetentionDays;
public void setAdminAddresses(String adminAddresses) { public void setAdminAddresses(String adminAddresses) {
this.adminAddresses = adminAddresses; this.adminAddresses = adminAddresses;
} }
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public void setAppName(String appName) { public void setAppName(String appName) {
this.appName = appName; this.appName = appName;
} }
public void setAddress(String address) {
this.address = address;
}
public void setIp(String ip) { public void setIp(String ip) {
this.ip = ip; this.ip = ip;
} }
public void setPort(int port) { public void setPort(int port) {
this.port = port; this.port = port;
} }
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public void setLogPath(String logPath) { public void setLogPath(String logPath) {
this.logPath = logPath; this.logPath = logPath;
} }
@ -81,7 +85,7 @@ public class XxlJobExecutor {
// init executor-server // init executor-server
port = port>0?port: NetUtil.findAvailablePort(9999); port = port>0?port: NetUtil.findAvailablePort(9999);
ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp(); ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp();
initRpcProvider(ip, port, appName, accessToken); initRpcProvider(address, ip, port, appName, accessToken);
} }
public void destroy(){ public void destroy(){
// destory executor-server // destory executor-server
@ -143,10 +147,12 @@ public class XxlJobExecutor {
// ---------------------- executor-server (rpc provider) ---------------------- // ---------------------- executor-server (rpc provider) ----------------------
private XxlRpcProviderFactory xxlRpcProviderFactory = null; 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 // init, provider factory
String address = IpUtil.getIpPort(ip, port); if (address==null || address.trim().length()==0) {
address = IpUtil.getIpPort(ip, port); // registry-addressdefault use address to registry , otherwise use ip:port if address is null
}
Map<String, String> serviceRegistryParam = new HashMap<String, String>(); Map<String, String> serviceRegistryParam = new HashMap<String, String>();
serviceRegistryParam.put("appName", appName); serviceRegistryParam.put("appName", appName);
serviceRegistryParam.put("address", address); serviceRegistryParam.put("address", address);

View File

@ -19,18 +19,21 @@ public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}") @Value("${xxl.job.admin.addresses}")
private String adminAddresses; private String adminAddresses;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.appname}") @Value("${xxl.job.executor.appname}")
private String appName; private String appName;
@Value("${xxl.job.executor.address}")
private String address;
@Value("${xxl.job.executor.ip}") @Value("${xxl.job.executor.ip}")
private String ip; private String ip;
@Value("${xxl.job.executor.port}") @Value("${xxl.job.executor.port}")
private int port; private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}") @Value("${xxl.job.executor.logpath}")
private String logPath; private String logPath;
@ -44,6 +47,7 @@ public class XxlJobConfig {
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setAccessToken(accessToken);