全部产品
云市场

简单 Java 任务

更新时间:2019-07-15 11:14:29

简单 Java 任务需要继承 JavaProcessor。

JavaProcessor 接口

接口 解释 是否必选
void preProcess(JobContext context) 执行 process 方法前,可以做一些准备工作。
ProcessResult process(JobContext context) 执行 process 方法,任务运行的核心接口,需要返回 ProcessResult。ProcessResult 接口请参见 ProcessResult
void postProcess(JobContext context) 执行完 process 方法,可以做一些销毁工作。
void kill(JobContext context) 前端 kill 任务会触发该方法。如果业务代码一直在循环体内,需要自己实现如何中断业务。

ProcessResult

每个 process 需要返回 ProcessResult,用来表示任务执行的状态、结果和错误信息。

  • 任务运行成功:return new ProcessResult(true)。
  • 任务运行失败:return new ProcessResult(false, ErrorMsg)或者直接抛异常。
  • 任务运行成功并且返回结果:return new ProcessResult(true, result)。result 是一个字符串,不能大于 1000 字节。

执行方式

简单 Java 任务可以使用单机执行和广播执行。

  • 单机执行:在同一个 groupId 下的机器随机挑一台执行。
  • 广播执行:同一个 groupId 下的所有机器同时执行。

Hello SchedulerX Demo 示例(独立 Java 应用)

  1. public class MyJob extends JavaProcessor {
  2. @Override
  3. public ProcessResult process(JobContext context) throws Exception {
  4. //TODO
  5. System.out.println("Hello, schedulerx2.0!");
  6. return new ProcessResult(true);
  7. }
  8. }

Hello SchedulerX Demo 示例(Spring 框架应用)

  1. @Component
  2. public class MyJob extends JavaProcessor {
  3. @Override
  4. public ProcessResult process(JobContext context) throws Exception {
  5. //TODO
  6. System.out.println("Hello, schedulerx2.0!");
  7. return new ProcessResult(true);
  8. }
  9. }

支持 kill 功能的 Demo 示例

  1. @Component
  2. public class MyJob extends JavaProcessor {
  3. private volatile boolean stop = false;
  4. @Override
  5. public ProcessResult process(JobContext context) throws Exception {
  6. int N = 10000;
  7. while (!stop && N >= 0) {
  8. //TODO
  9. N--;
  10. }
  11. return new ProcessResult(true);
  12. }
  13. @Override
  14. public void kill(JobContext context) {
  15. stop = true;
  16. }
  17. }