商城网站入驻系统/网站建设服务
本来打算自己写个分布式任务调度框架的,公司要求看XXL-JOB,自己写太费力了。
看了XXL-JOB 的核心代码后觉得,作者的能力远胜于。细节之处处理的尤为巧妙。
分布式调度的本质就是多进程的执行。我把核心的进程控制代码贴出来。
@Overridepublic ReturnT<String> execute(String param) throws Exception {String command = param;int exitValue = -1;BufferedReader bufferedReader = null;try {// command processProcess process = Runtime.getRuntime().exec(command);BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));// command logString line;while ((line = bufferedReader.readLine()) != null) {XxlJobLogger.log(line);}// command exitprocess.waitFor();exitValue = process.exitValue();} catch (Exception e) {XxlJobLogger.log(e);} finally {if (bufferedReader != null) {bufferedReader.close();}}if (exitValue == 0) {return IJobHandler.SUCCESS;} else {return new ReturnT<String>(IJobHandler.FAIL.getCode(), "command exit value("+exitValue+") is failed");}}