com.github.ltsopensource.tasktracker.TaskTracker Maven / Gradle / Ivy
The newest version!
package com.github.ltsopensource.tasktracker;
import com.github.ltsopensource.core.cluster.AbstractClientNode;
import com.github.ltsopensource.core.constant.ExtConfig;
import com.github.ltsopensource.core.constant.Level;
import com.github.ltsopensource.remoting.RemotingProcessor;
import com.github.ltsopensource.tasktracker.cmd.JobTerminateCmd;
import com.github.ltsopensource.tasktracker.domain.TaskTrackerAppContext;
import com.github.ltsopensource.tasktracker.domain.TaskTrackerNode;
import com.github.ltsopensource.tasktracker.monitor.StopWorkingMonitor;
import com.github.ltsopensource.tasktracker.monitor.TaskTrackerMStatReporter;
import com.github.ltsopensource.tasktracker.processor.RemotingDispatcher;
import com.github.ltsopensource.tasktracker.runner.JobRunner;
import com.github.ltsopensource.tasktracker.runner.RunnerFactory;
import com.github.ltsopensource.tasktracker.runner.RunnerPool;
import com.github.ltsopensource.tasktracker.support.JobPullMachine;
/**
* @author Robert HG ([email protected]) on 8/14/14.
* 任务执行节点
*/
public class TaskTracker extends AbstractClientNode {
@Override
protected void beforeStart() {
appContext.setMStatReporter(new TaskTrackerMStatReporter(appContext));
appContext.setRemotingClient(remotingClient);
// 设置 线程池
appContext.setRunnerPool(new RunnerPool(appContext));
appContext.getMStatReporter().start();
appContext.setJobPullMachine(new JobPullMachine(appContext));
appContext.setStopWorkingMonitor(new StopWorkingMonitor(appContext));
appContext.getHttpCmdServer().registerCommands(
new JobTerminateCmd(appContext)); // 终止某个正在执行的任务
}
@Override
protected void afterStart() {
if (config.getParameter(ExtConfig.TASK_TRACKER_STOP_WORKING_ENABLE, false)) {
appContext.getStopWorkingMonitor().start();
}
}
@Override
protected void afterStop() {
appContext.getMStatReporter().stop();
appContext.getStopWorkingMonitor().stop();
appContext.getRunnerPool().shutDown();
}
@Override
protected void beforeStop() {
}
@Override
protected RemotingProcessor getDefaultProcessor() {
return new RemotingDispatcher(appContext);
}
public void setJobRunnerClass(Class clazz) {
appContext.setJobRunnerClass(clazz);
}
public void setWorkThreads(int workThreads) {
config.setWorkThreads(workThreads);
}
/**
* 设置业务日志记录级别
*/
public void setBizLoggerLevel(Level level) {
if (level != null) {
appContext.setBizLogLevel(level);
}
}
/**
* 设置JobRunner工场类,一般用户不用调用
*/
public void setRunnerFactory(RunnerFactory factory) {
appContext.setRunnerFactory(factory);
}
}