提交 177ab8d2 authored 作者: xueli.xue's avatar xueli.xue

执行器策略推送

上级 6169ac54
...@@ -737,7 +737,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 ...@@ -737,7 +737,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
- 3、CleanCode,清理无效的历史参数; - 3、CleanCode,清理无效的历史参数;
- 4、规范系统配置数据,通过配置文件统一管理; - 4、规范系统配置数据,通过配置文件统一管理;
- 5、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址; - 5、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
- 6、执行器路由规则:第一个、循环、随机、顺序故障(默认)转移; - 6、执行器路由规则:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
- 7、底层扩展数据接口调整; - 7、底层扩展数据接口调整;
- 8、新建任务默认为非运行状态; - 8、新建任务默认为非运行状态;
......
...@@ -154,7 +154,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` ( ...@@ -154,7 +154,7 @@ CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_INFO` (
`update_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL,
`author` varchar(64) DEFAULT NULL COMMENT '作者', `author` varchar(64) DEFAULT NULL COMMENT '作者',
`alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件', `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
`executor_route_strategy` varchar(20) DEFAULT NULL COMMENT '执行器路由策略', `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
`executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数', `executor_param` varchar(255) DEFAULT NULL COMMENT '执行器任务参数',
`glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是', `glue_switch` int(11) DEFAULT '0' COMMENT 'GLUE模式开关:0-否,1-是',
......
...@@ -14,6 +14,7 @@ public class ExecutorRouteRandom extends ExecutorRouter { ...@@ -14,6 +14,7 @@ public class ExecutorRouteRandom extends ExecutorRouter {
@Override @Override
public String route(int jobId, ArrayList<String> addressList) { public String route(int jobId, ArrayList<String> addressList) {
// Collections.shuffle(addressList);
return addressList.get(localRandom.nextInt(addressList.size())); return addressList.get(localRandom.nextInt(addressList.size()));
} }
......
...@@ -17,7 +17,9 @@ public interface IXxlJobLogDao { ...@@ -17,7 +17,9 @@ public interface IXxlJobLogDao {
public XxlJobLog load(int id); public XxlJobLog load(int id);
public int save(XxlJobLog xxlJobLog); public int save(XxlJobLog xxlJobLog);
public int updateTriggerInfo(XxlJobLog xxlJobLog); public int updateTriggerInfo(XxlJobLog xxlJobLog);
public int updateHandleInfo(XxlJobLog xxlJobLog); public int updateHandleInfo(XxlJobLog xxlJobLog);
public int delete(int jobId); public int delete(int jobId);
......
...@@ -88,16 +88,10 @@ ...@@ -88,16 +88,10 @@
<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG ( INSERT INTO XXL_JOB_QRTZ_TRIGGER_LOG (
`job_group`, `job_group`,
`job_id`, `job_id`
`executor_address`,
`executor_handler`,
`executor_param`
) VALUES ( ) VALUES (
#{jobGroup}, #{jobGroup},
#{jobId}, #{jobId}
#{executorAddress},
#{executorHandler},
#{executorParam}
); );
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() SELECT LAST_INSERT_ID()
......
...@@ -78,12 +78,12 @@ ...@@ -78,12 +78,12 @@
<th name="id" >id</th> <th name="id" >id</th>
<th name="jobGroup" >执行器ID</th> <th name="jobGroup" >执行器ID</th>
<th name="jobId" >任务ID</th> <th name="jobId" >任务ID</th>
<th name="executorAddress" >执行器地址</th>
<th name="executorHandler" >JobHandler</th>
<th name="executorParam" >任务参数</th>
<th name="triggerTime" >调度时间</th> <th name="triggerTime" >调度时间</th>
<th name="triggerCode" >调度结果</th> <th name="triggerCode" >调度结果</th>
<th name="triggerMsg" >调度备注</th> <th name="triggerMsg" >调度备注</th>
<th name="executorAddress" >执行器地址</th>
<th name="executorHandler" >JobHandler</th>
<th name="executorParam" >任务参数</th>
<th name="handleTime" >执行时间</th> <th name="handleTime" >执行时间</th>
<th name="handleCode" >执行结果</th> <th name="handleCode" >执行结果</th>
<th name="handleMsg" >执行备注</th> <th name="handleMsg" >执行备注</th>
......
...@@ -138,7 +138,7 @@ $(function() { ...@@ -138,7 +138,7 @@ $(function() {
"sProcessing" : "处理中...", "sProcessing" : "处理中...",
"sLengthMenu" : "每页 _MENU_ 条记录", "sLengthMenu" : "每页 _MENU_ 条记录",
"sZeroRecords" : "没有匹配结果", "sZeroRecords" : "没有匹配结果",
"sInfo" : "第 _PAGE_ 页 ( 总共 _PAGES_ 页 )", "sInfo" : "第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )",
"sInfoEmpty" : "无记录", "sInfoEmpty" : "无记录",
"sInfoFiltered" : "(由 _MAX_ 项结果过滤)", "sInfoFiltered" : "(由 _MAX_ 项结果过滤)",
"sInfoPostFix" : "", "sInfoPostFix" : "",
......
...@@ -81,15 +81,6 @@ $(function() { ...@@ -81,15 +81,6 @@ $(function() {
{ "data": 'id', "bSortable": false, "visible" : false}, { "data": 'id', "bSortable": false, "visible" : false},
{ "data": 'jobGroup', "visible" : false}, { "data": 'jobGroup', "visible" : false},
{ "data": 'jobId', "visible" : false}, { "data": 'jobId', "visible" : false},
{ "data": 'executorAddress', "visible" : true},
{
"data": 'executorHandler',
"visible" : true,
"render": function ( data, type, row ) {
return (row.executorHandler)?row.executorHandler:"GLUE模式";
}
},
{ "data": 'executorParam', "visible" : true},
{ {
"data": 'triggerTime', "data": 'triggerTime',
"render": function ( data, type, row ) { "render": function ( data, type, row ) {
...@@ -109,6 +100,16 @@ $(function() { ...@@ -109,6 +100,16 @@ $(function() {
return data?'<a class="logTips" href="javascript:;" >查看<span style="display:none;">'+ data +'</span></a>':"无"; return data?'<a class="logTips" href="javascript:;" >查看<span style="display:none;">'+ data +'</span></a>':"无";
} }
}, },
{ "data": 'executorAddress', "visible" : true},
{
"data": 'executorHandler',
"visible" : true,
"render": function ( data, type, row ) {
return (row.executorHandler)?row.executorHandler:"GLUE模式";
}
},
{ "data": 'executorParam', "visible" : true},
{ {
"data": 'handleTime', "data": 'handleTime',
"render": function ( data, type, row ) { "render": function ( data, type, row ) {
...@@ -147,7 +148,7 @@ $(function() { ...@@ -147,7 +148,7 @@ $(function() {
"sProcessing" : "处理中...", "sProcessing" : "处理中...",
"sLengthMenu" : "每页 _MENU_ 条记录", "sLengthMenu" : "每页 _MENU_ 条记录",
"sZeroRecords" : "没有匹配结果", "sZeroRecords" : "没有匹配结果",
"sInfo" : "第 _PAGE_ 页 ( 总共 _PAGES_ 页 )", "sInfo" : "第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )",
"sInfoEmpty" : "无记录", "sInfoEmpty" : "无记录",
"sInfoFiltered" : "(由 _MAX_ 项结果过滤)", "sInfoFiltered" : "(由 _MAX_ 项结果过滤)",
"sInfoPostFix" : "", "sInfoPostFix" : "",
......
package com.xxl.job.core.util; package com.xxl.job.core.util;
import com.xxl.job.core.rpc.codec.RpcResponse;
import com.xxl.job.core.rpc.serialize.HessianSerializer;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
...@@ -8,6 +10,8 @@ import org.apache.http.entity.ContentType; ...@@ -8,6 +10,8 @@ import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
...@@ -18,6 +22,7 @@ import java.io.InputStream; ...@@ -18,6 +22,7 @@ import java.io.InputStream;
* @author xuxueli 2015-10-31 19:50:41 * @author xuxueli 2015-10-31 19:50:41
*/ */
public class HttpClientUtil { public class HttpClientUtil {
private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);
/** /**
* post request * post request
...@@ -47,7 +52,11 @@ public class HttpClientUtil { ...@@ -47,7 +52,11 @@ public class HttpClientUtil {
EntityUtils.consume(entity); EntityUtils.consume(entity);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); logger.error("", e);
RpcResponse rpcResponse = new RpcResponse();
rpcResponse.setError(e.getMessage());
responseBytes = HessianSerializer.serialize(rpcResponse);
} finally { } finally {
httpPost.releaseConnection(); httpPost.releaseConnection();
try { try {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论