当前位置: 首页 > news >正文

Spring Quartz 集群动态创建任务

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

Quartz 使用时需要注意,它是将 对象序列化 掉,保存起来,符合时间条间时再取出来反序列化执行.那么,它就要求所有的操作对象是可序列化的.通常我们操作是通过 service 层来执行的,但是service显然是不可以序列化的,因此有两种思路 1 设置上下文对象,然后调用时取出 2 设置对象名称从Spring 中获取. 参考的例子中 2,3 分别用了这两个思路.

具体任务生成参考官方示例

 quartz-2.2.3\examples\src\org\quartz\examples\example3\CronTriggerExample.java

自己实现的部分代码:

Job定义部分:

/**
 * 用于定时任务(注意这里所有属性必需支持Serializable,否则会报错)
 *
 * @author zhouxianglh@gmail.com
 *
 *         2017年4月7日
 */
public abstract class YmtJob implements Job, Serializable {
    /**
     *
     */
    private static final long serialVersionUID = -4226096330498705509L;

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobDataMap dataMap = context.getJobDetail().getJobDataMap();
        run(dataMap);
    }

任务生成部分: 

        JobDataMap jobData = new JobDataMap();
        if (null != job.getMap()) {
            jobData.putAll(job.getMap());
        }
        JobDetail jobDetail = JobBuilder.newJob(job.getClass()).setJobData(jobData)
                .withIdentity(JobKey.jobKey(job.getKey())).build();
        //
        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(TriggerKey.triggerKey(job.getKey()))
                .withSchedule(CronScheduleBuilder.cronSchedule(job.getCronExpression())).build();
        //
        Scheduler scheduler = schedulerFactoryBean.getScheduler();
        scheduler.scheduleJob(jobDetail, trigger);

任务执行

    @Override
    public void run(JobDataMap dataMap) {
        TaskBiz taskBiz = SpringContex.getBean("taskBiz");
        BillUnit billUnit = SpringContex.getBean("billUnit");
        TaskPrePick prePick = billUnit.getPrePickById(id);
        WmsTask task = new WmsTask();
        task.setBillid(id);
        task.setTaskdesc("根据收货单生成收货任务");
        task.setLevel(0);
        task.setType(7);
        task.setWhCode(prePick.getWhCode());
        taskBiz.addTask(task);
    }

参考:
http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start.html
http://blog.csdn.net/zjx86320/article/details/52346187
http://fanshuyao.iteye.com/blog/2309702

转载于:https://my.oschina.net/zhouxiang/blog/888455

相关文章:

  • 考试题解集合
  • sublime Text3 插件
  • Http1.0和Http1.1的主要区别
  • DOM操作表格
  • BZOJ1486 最小圈 [分数规划+负权环]
  • 医疗成像领域引进人工智能: AI 帮助医生进行成像分析
  • linux命令总结basename
  • 遍历字典 NSDictionary
  • 2012金华邀请赛解题报告
  • Java9 新特性 详解
  • 设置Google浏览器不缓存JS
  • IntelliJ Idea 常用快捷键列表
  • SpringCloud教程 | 第三篇: 服务消费者(Feign)
  • 前端远程调试
  • 与Brian Goetz聊Java的数据类
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 3.7、@ResponseBody 和 @RestController
  • echarts的各种常用效果展示
  • es6(二):字符串的扩展
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JS专题之继承
  • leetcode98. Validate Binary Search Tree
  • Python 反序列化安全问题(二)
  • Redis的resp协议
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • storm drpc实例
  • Vim Clutch | 面向脚踏板编程……
  • yii2中session跨域名的问题
  • 回顾 Swift 多平台移植进度 #2
  • 马上搞懂 GeoJSON
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 你不可错过的前端面试题(一)
  • 前端面试题总结
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​香农与信息论三大定律
  • # 飞书APP集成平台-数字化落地
  • ###C语言程序设计-----C语言学习(6)#
  • #《AI中文版》V3 第 1 章 概述
  • #Linux(make工具和makefile文件以及makefile语法)
  • #控制台大学课堂点名问题_课堂随机点名
  • #微信小程序:微信小程序常见的配置传值
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (AngularJS)Angular 控制器之间通信初探
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计大学生兼职系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (一)80c52学习之旅-起始篇
  • (转)c++ std::pair 与 std::make
  • (转)甲方乙方——赵民谈找工作
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)