电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring整合Quartz開發代碼實例

瀏覽:99日期:2023-09-08 14:13:43

我們使用Spring整合Quartz開發,本實例采用數據庫模式的demo。

xml文件配置如下:

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:context='http://www.springframework.org/schema/context' xsi:schemaLocation=' http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd'> <!--加載數據庫連接的配置文件--> <!--<context:property-placeholder location='jdbc.properties'></context:property-placeholder>--> <!-- c3p0:數據源配置 --> <bean destroy-method='close'> <property name='driverClass' value='com.mysql.jdbc.Driver'/> <property name='jdbcUrl' value='jdbc:mysql://localhost:3306/quartz?Unicode=true&amp;characterEncoding=UTF-8'/> <property name='user' value='root'/> <property name='password' value='root'/> <property name='initialPoolSize' value='3'/> <property name='minPoolSize' value='2'/> <property name='maxPoolSize' value='10'/> <property name='maxIdleTime' value='60'/> <property name='acquireRetryDelay' value='1000'/> <property name='acquireRetryAttempts' value='10'/> <property name='preferredTestQuery' value='SELECT 1'/> </bean> <bean lazy-init='false' class='org.springframework.scheduling.quartz.SchedulerFactoryBean'> <property name='dataSource' ref='dataSource'></property> <property name='configLocation' value='quartz.properties'></property> <!-- <property name='triggers'></property>--> </bean></beans>

public class SimpleJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println(new Date()+'執行SimpleJob'); }}

public class ApplicationContextTest { public static Scheduler scheduler; public static void main(String[] args) throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext('applicationcontext-trigger.xml'); scheduler = (Scheduler) applicationContext.getBean('quartzScheduler'); //SimpleJob simpleJob = new SimpleJob(); scheduler.start(); //從數據庫中獲取相應的job及調度信息 //JobDetail jobDetail = scheduler.getJobDetail(new JobKey('trigger1', 'trigger1')); //resumeJob(jobDetail.getKey().getName(), jobDetail.getKey().getGroup()); //添加job執行 addJob('trigger1', 'trigger1', 'job1', 'job2', '0/20 * * * * ?', SimpleJob.class, new HashMap<>()); Thread.sleep(60 * 1000); //重新設置調度時間 System.out.println('重新設置調度時間'); rescheduleJob('trigger1','trigger1','0/10 * * * * ?'); Thread.sleep(60 * 1000); //暫停調度 System.out.println('暫停調度'); pauseJob('trigger1','trigger1'); Thread.sleep(60 * 1000); System.out.println('恢復調度'); resumeJob('trigger1','trigger1'); Thread.sleep(60 * 1000); System.out.println('刪除調度'); removeJob('trigger1','trigger1'); Thread.sleep(60 * 1000); System.out.println(scheduler); } /** * 添加job執行 * * @param triggerKeyName * @param triggerKeyGroup * @param jobName * @param jobGroup * @param cronExpression * @param jobClass * @param jobData * @return * @throws Exception */ public static boolean addJob(String triggerKeyName, String triggerKeyGroup, String jobName, String jobGroup, String cronExpression, Class<? extends Job> jobClass, Map<String, Object> jobData) throws Exception { JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(triggerKeyName, triggerKeyGroup).build(); Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).withIdentity(triggerKeyName, triggerKeyGroup).build(); if (jobData != null && jobData.size() > 0) { JobDataMap jobDataMap = jobDetail.getJobDataMap(); jobDataMap.putAll(jobData); // JobExecutionContext context.getMergedJobDataMap().get('mailGuid'); } scheduler.scheduleJob(jobDetail, trigger);// if (!scheduler.isShutdown()) {// scheduler.start();// } return true; } /** * 重新設置job執行 * @param triggerKeyName * @param triggerKeyGroup * @param cronExpression * @return * @throws SchedulerException */ public static boolean rescheduleJob(String triggerKeyName, String triggerKeyGroup, String cronExpression) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, triggerKeyGroup); if (scheduler.checkExists(triggerKey)) { Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).withIdentity(triggerKey).build(); scheduler.rescheduleJob(triggerKey, trigger); } return true; } /** * 刪除job * @param triggerKeyName * @param triggerKeyGroup * @return * @throws SchedulerException */ public static boolean removeJob(String triggerKeyName, String triggerKeyGroup) throws SchedulerException { // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, triggerKeyGroup); boolean result = false; if (scheduler.checkExists(triggerKey)) { result = scheduler.unscheduleJob(triggerKey); } return result; } /** * 暫停job * @param triggerKeyName * @param triggerKeyGroup * @return * @throws SchedulerException */ public static boolean pauseJob(String triggerKeyName, String triggerKeyGroup) throws SchedulerException { // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, triggerKeyGroup); boolean result = false; if (scheduler.checkExists(triggerKey)) { scheduler.pauseTrigger(triggerKey); result = true; } else { } return result; } /** * 重啟job * @param triggerKeyName * @param triggerKeyGroup * @return * @throws SchedulerException */ public static boolean resumeJob(String triggerKeyName, String triggerKeyGroup) throws SchedulerException { TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, triggerKeyGroup); boolean result = false; if (scheduler.checkExists(triggerKey)) { scheduler.resumeTrigger(triggerKey); result = true; } else { } return result; }}

quart.properties正常配置信息,然后點擊運行即可。

本實例中當運行的任務在暫停的情況下,一旦重新恢復,會將暫停期間的任務運行如圖:

Spring整合Quartz開發代碼實例

源碼鏈接: https://github.com/albert-liu435/springquartz

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 酸度计_PH计_特斯拉计-西安云仪 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 爱科技iMobile-专业的科技资讯信息分享网站 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 昊宇水工|河北昊宇水工机械工程有限公司 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 济南律师,济南法律咨询,山东法律顾问-山东沃德律师事务所 | ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 |