/** * failover for trigger remote address * * @param addressArr * @return */ public RemoteCallBack failoverTrigger( String handler_address, HashMap<String, String> handler_params, XxlJobLog jobLog) { if (handler_address.split(",").length > 1) { // for ha List<String> addressList = Arrays.asList(handler_address.split(",")); Collections.shuffle(addressList); // for failover String failoverMessage = ""; for (String address : addressList) { if (StringUtils.isNotBlank(address)) { HashMap<String, String> params = new HashMap<String, String>(); params.put(HandlerParamEnum.TIMESTAMP.name(), String.valueOf(System.currentTimeMillis())); params.put(HandlerParamEnum.ACTION.name(), ActionEnum.BEAT.name()); RemoteCallBack beatResult = HttpUtil.post(HttpUtil.addressToUrl(address), params); failoverMessage += MessageFormat.format( "BEAT running, <br>>>>[address] : {0}, <br>>>>[status] : {1}, <br>>>>[msg] : {2} <br><hr>", address, beatResult.getStatus(), beatResult.getMsg()); if (RemoteCallBack.SUCCESS.equals(beatResult.getStatus())) { jobLog.setExecutorAddress(address); RemoteCallBack triggerCallback = HttpUtil.post(HttpUtil.addressToUrl(address), handler_params); triggerCallback.setStatus(RemoteCallBack.SUCCESS); failoverMessage += MessageFormat.format( "Trigger running, <br>>>>[address] : {0}, <br>>>>[status] : {1}, <br>>>>[msg] : {2} <br><hr>", address, triggerCallback.getStatus(), triggerCallback.getMsg()); triggerCallback.setMsg(failoverMessage); return triggerCallback; } } } RemoteCallBack result = new RemoteCallBack(); result.setStatus(RemoteCallBack.FAIL); result.setMsg(failoverMessage); return result; } else { jobLog.setExecutorAddress(handler_address); RemoteCallBack triggerCallback = HttpUtil.post(HttpUtil.addressToUrl(handler_address), handler_params); String failoverMessage = MessageFormat.format( "Trigger running, <br>>>>[address] : {0}, <br>>>>[status] : {1}, <br>>>>[msg] : {2} <br><hr>", handler_address, triggerCallback.getStatus(), triggerCallback.getMsg()); triggerCallback.setMsg(failoverMessage); return triggerCallback; } }