Skip to content

Job SPI

王宇轩 edited this page May 17, 2018 · 4 revisions

mossrose任务扩展

Mossrose内置了三种任务类型,并支持用户自定义扩展新的任务类型

内置任务类型

  • SimpleJob

简单任务

  • DistributedJob

分布式任务,通过Slicer将作业分隔成多个子任务,子任务在集群内分布执行

  • StreamingJob

分布式流式任务,解决分片非常多时DistributedJob内存占用大的问题

  • MapReduceJob

Map -> Execute -> Reduce

扩展

新建任务类型

实现接口com.jiuxian.mossrose.job.RunnableJob

package your.domain;
import com.jiuxian.mossrose.job.RunnableJob;

public interface YourJob extends RunnableJob{
    // execute method
}

参考

  • com.jiuxian.mossrose.job.SimpleJob
  • com.jiuxian.mossrose.job.DistributedJob
  • com.jiuxian.mossrose.job.StreamingJob
新建任务类型的Handler

实现接口com.jiuxian.mossrose.job.handler.Handler<T extends RunnableJob>

package your.domain;

import com.jiuxian.mossrose.compute.GridComputer;

public class YourJobHandler implements Handler<YourJob> {

	@Override
	public void handle(JobExecutor<YourJob> jobExecutor) {
		// Handle the job
                jobExecutor.run(yourJob -> {/* do handle */});
	}

}

参考

  • com.jiuxian.mossrose.job.handler.impl.SimpleJobHandler
  • com.jiuxian.mossrose.job.handler.impl.DistributedJobHandler
  • com.jiuxian.mossrose.job.handler.impl.StreamingJobHandler
  • com.jiuxian.mossrose.job.handler.impl.MapReduceJobHandler
注册任务类型

在classpath下新建文件META-INF/mossrose/mjob-handler.register

your.domain.YourJob=your.domain.YourJobHandler
编写任务实现自定义任务类型YourJob即可