代码拉取完成,页面将自动刷新
同步操作将从 liuht777/taroco-scheduler 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
说明:
@Component
public class SimpleTask {
private static int i = 0;
@Scheduled(fixedDelay = 5000)
public void print() {
System.out.println("===========start!=========");
System.out.println("I:"+i);i++;
System.out.println("=========== end !=========");
}
@Scheduled(cron = "0/5 * * * * ?")
public void print1() {
System.out.println("===========start!=========");
System.out.println("I:"+i);i++;
System.out.println("=========== end !=========");
}
@Scheduled(fixedRate = 3000)
public void print3() {
System.out.println("===========start!=========");
System.out.println("I:"+i);i++;
System.out.println("=========== end !=========");
}
}
// 定义任务实体
TaskDefine task = new TaskDefine();
task.setTargetBean(SchedulerTaskForward.BEAN_NAME);
task.setTargetMethod(SchedulerTaskForward.METHOD);
task.setExtKeySuffix(SUFFIX + model.getId());
task.setCronExpression(model.getCronExpression());
task.setParams(gson.toJson(model));
if (ConsoleManager.isExistsTask(task)) {
// 更新
ConsoleManager.updateScheduleTask(task);
} else {
// 新增
task.setStartTime(new Date());
ConsoleManager.addScheduleTask(task);
}
@SuppressWarnings("unchecked")
@Component("schedulerTaskForward")
public class SchedulerTaskForward {
public static final String BEAN_NAME = "schedulerTaskForward";
public static final String METHOD = "forward";
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
private static final Logger LOGGER = LoggerFactory.getLogger(SchedulerTaskForward.class);
@Autowired
private EpmManagerTerminalFeign terminalFeign;
@Autowired
private AmqpClientService mqService;
@Value("${collectd.batch}")
protected int batch;
public void forward(String json) {
SchedulerTaskModel model = gson.fromJson(json, SchedulerTaskModel.class);
if (ExecuteType.report.getCode().equals(Integer.valueOf(model.getExecuteType()))) {
// 上报的在定时任务中不执行
throw new SchedulerTaskExecuteException("任务: " + model.getTaskName() + ", 属于上报任务, 禁止在定时任务中执行");
}
executeCollect(TaskType.forCode(model.getTaskType()), model.getAfns(), model.getOrgId(), model.getTermType());
LOGGER.debug("任务: " + model.getTaskName() + ", 执行完成");
}
uncode:
schedule:
zkConnect: ${spring.cloud.zookeeper.connectString}
rootPath: /uncode/schedule
zkSessionTimeout: 60000
zkUsername: admin
zkPassword: admin
poolSize: 10
# ipBlackList[0]: 127.0.0.2 #server黑名单可选
# ipBlackList[1]: 127.0.0.3 #server黑名单可选
2 启动类
@SpringBootApplication
@EnableScheduling
// 这个也是可选的,如果你不需要默认的任务管理界面的话(/uncode/schedule)
// 强烈建议自己去实现这个任务管理功能
@ServletComponentScan("cn.uncode.schedule")
public class UncodeScheduleApplication {
public static void main(String[] agrs){
SpringApplication.run(UncodeScheduleApplication.class,agrs);
}
}
<!-- 分布式任务管理器 -->
<bean id="schedulerTaskManager" class="cn.uncode.schedule.SchedulerTaskManager" init-method="init">
<property name="config">
<map>
<entry key="uncode.schedule.zkConnect" value="127.0.0.1:2181" />
<entry key="uncode.schedule.rootPath" value="/uncode/schedule" />
<entry key="uncode.schedule.zkSessionTimeout" value="60000" />
<entry key="uncode.schedule.zkUsername" value="admin" />
<entry key="uncode.schedule.zkPassword" value="admin" />
<entry key="uncode.schedule.poolSize" value="10" />
<entry key="uncode.schedule.ipBlacklist" value="127.0.0.2,127.0.0.3" />
</map>
</property>
</bean>
<bean id="task1" class="cn.uncode.schedule.test.task.TestTask" />
<task:scheduled-tasks scheduler="schedulerTaskManager">
<task:scheduled ref="task1" method="task1" fixed-delay="5000"/>
</task:scheduled-tasks>
1 动态添加任务
ConsoleManager.addScheduleTask(TaskDefine taskDefine);
2 动态删除任务
ConsoleManager.delScheduleTask(TaskDefine taskDefine);
3 动态更新任务
ConsoleManager.updateScheduleTask(TaskDefine taskDefine);
4 查询任务列表
ConsoleManager.queryScheduleTask();
通过获得我们定义的SchedulerTaskManager这个bean,依然可以动态的添加任务。这里就不展示了。
作者:刘惠涛
转载请注明出处
2017-10-23
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。