异步任务

这里提供一种思路:

要异步执行某个任务,将其写入任务表,quartz扫描该表,然后执行对应的任务。


1、写入,将需要异步执行的任务,通过myBatis、hibernate的方式,调用oracle的package写入数据库,该package有几个不同的存储过程、函数:createTask(package可以专门写,没有就用简单的插入方式)
2、存储,将需要执行的任务信息,以package为触发,该package有对应的一整套的表,如aysn_task_wait、aysn_task_succ、aysn_task_fail、aysn_task_handling(正在执行)、aysn_task_param、aysn_task_time、aysn_task_time_history。看名字基本能知道各个表示做什么的
3、执行,Quartz执行、多线程异步任务执行。例如通过Quartz扫描aysn_task_wait表,需要执行什么任务,然后执行该任务对应的service即可。根据执行任务结果修改对应的任务状态
简单总结:

posted @ 2017-08-10 21:37 m.z 阅读(...) 评论(...) 编辑 收藏