接入执行器,自动注册
This commit is contained in:
parent
eb369ec67e
commit
9c05c3a96f
|
@ -53,7 +53,7 @@ public class JobInfoController {
|
|||
int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
|
||||
|
||||
return xxlJobService.add(jobGroup, jobCron, jobDesc, author, alarmEmail,
|
||||
executorAppname, executorAddress, executorHandler, executorParam,
|
||||
executorAddress, executorHandler, executorParam,
|
||||
glueSwitch, glueSource, glueRemark, childJobKey);
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class JobInfoController {
|
|||
int glueSwitch, String childJobKey) {
|
||||
|
||||
return xxlJobService.reschedule(jobGroup, jobName, jobCron, jobDesc, author, alarmEmail,
|
||||
executorAppname, executorAddress, executorHandler, executorParam, glueSwitch, childJobKey);
|
||||
executorAddress, executorHandler, executorParam, glueSwitch, childJobKey);
|
||||
}
|
||||
|
||||
@RequestMapping("/remove")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.xxl.job.admin.core.jobbean;
|
||||
|
||||
import com.xxl.job.admin.core.callback.XxlJobLogCallbackServer;
|
||||
import com.xxl.job.admin.core.model.XxlJobGroup;
|
||||
import com.xxl.job.admin.core.model.XxlJobInfo;
|
||||
import com.xxl.job.admin.core.model.XxlJobLog;
|
||||
import com.xxl.job.admin.core.thread.JobMonitorHelper;
|
||||
|
@ -67,13 +68,16 @@ public class RemoteHttpJobBean extends QuartzJobBean {
|
|||
// parse address
|
||||
List<String> addressList = new ArrayList<String>();
|
||||
String parseAddressMsg = null;
|
||||
if (StringUtils.isNotBlank(jobInfo.getExecutorAppname())) {
|
||||
addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), jobInfo.getExecutorAppname());
|
||||
parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(jobInfo.getExecutorAddress())) {
|
||||
List<String> addressArr = Arrays.asList(jobInfo.getExecutorAddress().split(","));
|
||||
addressList.addAll(addressArr);
|
||||
parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
|
||||
} else {
|
||||
XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(jobInfo.getJobGroup());
|
||||
if (group!=null) {
|
||||
addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
|
||||
}
|
||||
parseAddressMsg = MessageFormat.format("Parse Address (Appname注册方式) <br>>>>[address list] : {0}<br><hr>", addressList);
|
||||
}
|
||||
|
||||
// failover trigger
|
||||
|
|
|
@ -21,7 +21,6 @@ public class XxlJobInfo {
|
|||
private String author; // 负责人
|
||||
private String alarmEmail; // 报警邮件
|
||||
|
||||
private String executorAppname; // 执行器对应的AppName
|
||||
private String executorAddress; // 执行器地址,有多个则逗号分隔
|
||||
private String executorHandler; // 执行器,任务Handler名称
|
||||
private String executorParam; // 执行器,任务参数
|
||||
|
@ -107,14 +106,6 @@ public class XxlJobInfo {
|
|||
this.alarmEmail = alarmEmail;
|
||||
}
|
||||
|
||||
public String getExecutorAppname() {
|
||||
return executorAppname;
|
||||
}
|
||||
|
||||
public void setExecutorAppname(String executorAppname) {
|
||||
this.executorAppname = executorAppname;
|
||||
}
|
||||
|
||||
public String getExecutorAddress() {
|
||||
return executorAddress;
|
||||
}
|
||||
|
|
|
@ -14,11 +14,11 @@ public interface IXxlJobService {
|
|||
public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
|
||||
|
||||
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
|
||||
String executorAppname, String executorAddress, String executorHandler, String executorParam,
|
||||
String executorAddress, String executorHandler, String executorParam,
|
||||
int glueSwitch, String glueSource, String glueRemark, String childJobKey);
|
||||
|
||||
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||
String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
|
||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
|
||||
|
||||
public ReturnT<String> remove(String jobGroup, String jobName);
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
|
||||
@Override
|
||||
public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
|
||||
String executorAppname, String executorAddress, String executorHandler, String executorParam,
|
||||
String executorAddress, String executorHandler, String executorParam,
|
||||
int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
|
||||
// valid
|
||||
XxlJobGroup group = xxlJobGroupDao.load(jobGroup);
|
||||
|
@ -84,12 +84,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
if (StringUtils.isBlank(alarmEmail)) {
|
||||
return new ReturnT<String>(500, "请输入“报警邮件”");
|
||||
}
|
||||
if (StringUtils.isBlank(executorAppname) && StringUtils.isBlank(executorAddress)) {
|
||||
return new ReturnT<String>(500, "“执行器AppName”和“执行器地址”不可同时为空");
|
||||
}
|
||||
if (StringUtils.isNotBlank(executorAppname) && StringUtils.isNotBlank(executorAddress)) {
|
||||
return new ReturnT<String>(500, "“执行器AppName”和“执行器地址” 不可同时使用");
|
||||
}
|
||||
if (glueSwitch==0 && StringUtils.isBlank(executorHandler)) {
|
||||
return new ReturnT<String>(500, "请输入“JobHandler”");
|
||||
}
|
||||
|
@ -128,7 +122,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
jobInfo.setJobDesc(jobDesc);
|
||||
jobInfo.setAuthor(author);
|
||||
jobInfo.setAlarmEmail(alarmEmail);
|
||||
jobInfo.setExecutorAppname(executorAppname);
|
||||
jobInfo.setExecutorAddress(executorAddress);
|
||||
jobInfo.setExecutorHandler(executorHandler);
|
||||
jobInfo.setExecutorParam(executorParam);
|
||||
|
@ -154,7 +147,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
|
||||
@Override
|
||||
public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
|
||||
String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
|
||||
String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
|
||||
|
||||
// valid
|
||||
XxlJobGroup group = xxlJobGroupDao.load(jobGroup);
|
||||
|
@ -176,12 +169,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
if (StringUtils.isBlank(alarmEmail)) {
|
||||
return new ReturnT<String>(500, "请输入“报警邮件”");
|
||||
}
|
||||
if (StringUtils.isBlank(executorAppname) && StringUtils.isBlank(executorAddress)) {
|
||||
return new ReturnT<String>(500, "“执行器AppName”和“执行器地址”不可同时为空");
|
||||
}
|
||||
if (StringUtils.isNotBlank(executorAppname) && StringUtils.isNotBlank(executorAddress)) {
|
||||
return new ReturnT<String>(500, "“执行器AppName”和“执行器地址” 不可同时使用");
|
||||
}
|
||||
if (glueSwitch==0 && StringUtils.isBlank(executorHandler)) {
|
||||
return new ReturnT<String>(500, "请输入“JobHandler”");
|
||||
}
|
||||
|
@ -207,7 +194,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
|
|||
jobInfo.setJobDesc(jobDesc);
|
||||
jobInfo.setAuthor(author);
|
||||
jobInfo.setAlarmEmail(alarmEmail);
|
||||
jobInfo.setExecutorAppname(executorAppname);
|
||||
jobInfo.setExecutorAddress(executorAddress);
|
||||
jobInfo.setExecutorHandler(executorHandler);
|
||||
jobInfo.setExecutorParam(executorParam);
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
<result column="author" property="author" />
|
||||
<result column="alarm_email" property="alarmEmail" />
|
||||
|
||||
<result column="executor_appname" property="executorAppname" />
|
||||
<result column="executor_address" property="executorAddress" />
|
||||
<result column="executor_handler" property="executorHandler" />
|
||||
<result column="executor_param" property="executorParam" />
|
||||
|
@ -39,7 +38,6 @@
|
|||
t.update_time,
|
||||
t.author,
|
||||
t.alarm_email,
|
||||
t.executor_appname,
|
||||
t.executor_address,
|
||||
t.executor_handler,
|
||||
t.executor_param,
|
||||
|
@ -87,7 +85,6 @@
|
|||
update_time,
|
||||
author,
|
||||
alarm_email,
|
||||
executor_appname,
|
||||
executor_address,
|
||||
executor_handler,
|
||||
executor_param,
|
||||
|
@ -104,7 +101,6 @@
|
|||
NOW(),
|
||||
#{author},
|
||||
#{alarmEmail},
|
||||
#{executorAppname},
|
||||
#{executorAddress},
|
||||
#{executorHandler},
|
||||
#{executorParam},
|
||||
|
@ -133,7 +129,6 @@
|
|||
update_time = NOW(),
|
||||
author = #{author},
|
||||
alarm_email = #{alarmEmail},
|
||||
executor_appname = #{executorAppname},
|
||||
executor_address = #{executorAddress},
|
||||
executor_handler = #{executorHandler},
|
||||
executor_param = #{executorParam},
|
||||
|
|
|
@ -78,7 +78,6 @@
|
|||
<th name="childJobKey" >任务Key</th>
|
||||
<th name="jobDesc" >描述</th>
|
||||
<th name="jobCron" >Cron</th>
|
||||
<th name="executorAppname" >执行器Appname</th>
|
||||
<th name="executorAddress" >执行器地址</th>
|
||||
<th name="executorHandler" >JobJandler</th>
|
||||
<th name="executorParam" >任务参数</th>
|
||||
|
@ -127,14 +126,13 @@
|
|||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="executorAddress">
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="executorAppname" style="display:none;">
|
||||
<label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorAppname" placeholder="请输入执行器对应Appname, 自动发现注册的人任务" maxlength="100" ></div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" readonly >
|
||||
<span class="input-group-addon"><b>AUTO</b> <input type="checkbox" class="addressAuto" checked="checked" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
</div>
|
||||
|
@ -166,9 +164,6 @@
|
|||
<button type="submit" class="btn btn-primary" >保存</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
||||
</div>
|
||||
<div class="col-sm-offset-0 col-sm-3">
|
||||
启动注册 <input type="checkbox" class="ifAppName" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="glueRemark" value="GLUE代码初始化" >
|
||||
|
@ -215,14 +210,13 @@ public class DemoGlueJobHandler extends IJobHandler {
|
|||
<div class="col-sm-4"><input type="text" class="form-control" name="jobDesc" placeholder="请输入“描述”" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="executorAddress">
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" ></div>
|
||||
</div>
|
||||
<div class="executorAppname" style="display:none;">
|
||||
<label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="executorAppname" placeholder="请输入执行器对应Appname, 自动发现注册的人任务" maxlength="100" ></div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">执行器地址<font color="black">*</font></label>
|
||||
<div class="col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="executorAddress" placeholder="请输入“执行器地址”,多个地址逗号分隔" maxlength="50" >
|
||||
<span class="input-group-addon"><b>AUTO</b> <input type="checkbox" class="addressAuto" checked="checked" ></span>
|
||||
</div>
|
||||
</div>
|
||||
<label for="lastname" class="col-sm-2 control-label">Cron<font color="red">*</font></label>
|
||||
<div class="col-sm-4"><input type="text" class="form-control" name="jobCron" placeholder="请输入“Cron”" maxlength="20" ></div>
|
||||
</div>
|
||||
|
|
|
@ -45,7 +45,6 @@ $(function() {
|
|||
},
|
||||
{ "data": 'jobDesc', "visible" : true},
|
||||
{ "data": 'jobCron', "visible" : true},
|
||||
{ "data": 'executorAppname', "visible" : false},
|
||||
{ "data": 'executorAddress', "visible" : false},
|
||||
{
|
||||
"data": 'executorHandler',
|
||||
|
@ -114,7 +113,6 @@ $(function() {
|
|||
' jobDesc="'+ row.jobDesc +'" '+
|
||||
' author="'+ row.author +'" '+
|
||||
' alarmEmail="'+ row.alarmEmail +'" '+
|
||||
' executorAppname="'+row.executorAppname +'" '+
|
||||
' executorAddress="'+row.executorAddress +'" '+
|
||||
' executorHandler="'+row.executorHandler +'" '+
|
||||
' executorParam="'+ row.executorParam +'" '+
|
||||
|
@ -312,29 +310,18 @@ $(function() {
|
|||
$(".remote_panel").show(); // remote
|
||||
|
||||
$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
|
||||
|
||||
// 注册模式
|
||||
$("#addModal .form .executorAddress").show();
|
||||
$("#addModal .form .executorAppname").hide();
|
||||
});
|
||||
|
||||
// 注册模式
|
||||
$(".ifAppName").click(function(){
|
||||
var ifAppName = $(this).is(':checked');
|
||||
|
||||
// Auto 注册模式
|
||||
$(".addressAuto").click(function(){
|
||||
var addressAuto = $(this).is(':checked');
|
||||
var $executorAddress = $(this).parents("form").find("input[name='executorAddress']");
|
||||
var $executorAppname = $(this).parents("form").find("input[name='executorAppname']");
|
||||
$($executorAddress).val("");
|
||||
$($executorAppname).val("");
|
||||
|
||||
var $executorAddressDiv = $(this).parents("form").find(".executorAddress");
|
||||
var $executorAppnameDiv = $(this).parents("form").find(".executorAppname");
|
||||
if (ifAppName) {
|
||||
$($executorAddressDiv).hide();
|
||||
$($executorAppnameDiv).show();
|
||||
if (addressAuto) {
|
||||
$executorAddress.val("");
|
||||
$executorAddress.attr("readonly","readonly");
|
||||
} else {
|
||||
$($executorAddressDiv).show();
|
||||
$($executorAppnameDiv).hide();
|
||||
$executorAddress.val("");
|
||||
$executorAddress.removeAttr("readonly");
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -363,28 +350,27 @@ $(function() {
|
|||
$("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron"));
|
||||
$("#updateModal .form input[name='author']").val($(this).parent('p').attr("author"));
|
||||
$("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail"));
|
||||
$("#updateModal .form input[name='executorAppname']").val($(this).parent('p').attr("executorAppname"));
|
||||
$("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress"));
|
||||
$("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler"));
|
||||
$("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam"));
|
||||
$("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey"));
|
||||
|
||||
// addressAuto
|
||||
var executorAddress = $(this).parent('p').attr("executorAddress");
|
||||
var $addressAuto = $("#updateModal .addressAuto");
|
||||
var $executorAddress = $("#updateModal .form input[name='executorAddress']");
|
||||
if (executorAddress) {
|
||||
$addressAuto.attr("checked", false);
|
||||
$executorAddress.removeAttr("readonly");
|
||||
} else {
|
||||
$addressAuto.attr("checked", true);
|
||||
$executorAddress.attr("readonly","readonly");
|
||||
}
|
||||
|
||||
// jobGroupTitle
|
||||
var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text();
|
||||
$("#updateModal .form .jobGroupTitle").val(jobGroupTitle);
|
||||
|
||||
// appname / address, switch
|
||||
var $executorAppname = $(this).parent('p').attr("executorAppname");
|
||||
if ($executorAppname) {
|
||||
$("#updateModal .form .ifAppName").attr("checked", true);
|
||||
$("#updateModal .form .executorAppname").show();
|
||||
$("#updateModal .form .executorAddress").hide();
|
||||
} else {
|
||||
$("#updateModal .form .ifAppName").attr("checked", false);
|
||||
$("#updateModal .form .executorAppname").hide();
|
||||
$("#updateModal .form .executorAddress").show();
|
||||
}
|
||||
|
||||
// glueSwitch
|
||||
var glueSwitch = $(this).parent('p').attr("glueSwitch");
|
||||
$("#updateModal .form input[name='glueSwitch']").val(glueSwitch);
|
||||
|
|
Loading…
Reference in New Issue