成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring整合Quartz調(diào)度器

techstay / 2567人閱讀

摘要:是一個(gè)任務(wù)調(diào)度框架,由語言開發(fā),可以用來做一些定時(shí)發(fā)送,監(jiān)聽事件等工作。包下完成調(diào)度需要步告訴調(diào)度器要做什么。告訴調(diào)度器什么時(shí)候做。任務(wù)監(jiān)聽器兩個(gè)接口分別是觸發(fā)器相關(guān)的監(jiān)聽接口和作業(yè)相關(guān)監(jiān)聽接口。

Quartz是一個(gè)任務(wù)調(diào)度框架,由Java語言開發(fā),可以用來做一些定時(shí)發(fā)送,監(jiān)聽事件等工作。
例如:讓一個(gè)程序每天晚上12點(diǎn)執(zhí)行一次?;蛘呙扛?秒執(zhí)行一次。

jar: org.quartz-scheduler包下

Quartz完成調(diào)度需要3步

JobDetail:告訴調(diào)度器要做什么。
Trigger:告訴調(diào)度器什么時(shí)候做。
Scheduler:準(zhǔn)備妥了就從這里start

下面就是一個(gè)簡(jiǎn)單的spring 整合quartz的實(shí)例。

簡(jiǎn)單實(shí)現(xiàn)

先看JobDetail部分:寫一個(gè)類實(shí)現(xiàn)Job接口,重寫execute()方法,在該方法中寫要執(zhí)行的邏輯,(告訴調(diào)度器要做什么)

public class UpdateProductJob implements Job{

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        try {
            System.out.print("我來檢查啦")
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

然后是配置xml文件。


    
        
    

    
        
        
        
    

    
        
        
    

    
        
            
                
            
        
    

從上面可以看到有兩個(gè)Trigger分別是simpleTrigger和cronTrigger,這是兩種表達(dá)執(zhí)行時(shí)間的方式。

simpleTrigger是比較簡(jiǎn)單的方法,
表示間隔5秒執(zhí)行一次

而cronTrigger可以表達(dá)一些比較復(fù)雜的時(shí)間格式
表示每天23點(diǎn)59分執(zhí)行一次
具體的語法請(qǐng)搜索cron表達(dá)式,有些網(wǎng)站提供了自動(dòng)生成cron表達(dá)式的功能
比如http://cron.qqe2.com/ or http://www.cronmaker.com/
解決spring注入問題

在spring框架中會(huì)經(jīng)常用到IOC,那么在上面的execute()方法中不避免的也會(huì)用到注入,但是對(duì)于新手來說會(huì)遇到注入的接口會(huì)是null。
解決這個(gè)問題有兩個(gè)方法:

1.使用ApplicationContex對(duì)象加載applicationContext.xml文件注入U(xiǎn)serDaoI接口,但是這個(gè)方法不好的一點(diǎn)是每當(dāng)用一個(gè)接口就要寫一個(gè),比較麻煩。

ApplicationContext content = 
        new ClassPathXmlApplicationContext("classpath:META-INF/applicationContext.xml");
        userDaoI = content.getBean(UserDaoI.class);

2.第二個(gè)方法比較好,先寫一個(gè)類繼承AdaptableJobFactory 抽象方法,不需要任何改動(dòng)

@Service("jobFactory")
public class JobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;
    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        // 調(diào)用父類的方法
        Object jobInstance = super.createJobInstance(bundle);
        // 進(jìn)行注入
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}

2.2然后將這個(gè)類添加到配置文件里。

    
        
        
        
            
                
            
        
    

最后完整的配置信息是:


    
        
    

    
        
        
    

    
    
    
        
        
            
                
            
        
    
    

JobDetail部分就可以這樣寫了

@Service
public class UpdateProductJob implements Job{

    @Autowired
    ArticleService articleService;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        try {
            articleService.updateArticleType();
        }catch (Exception e){
            System.out.println(e);
        }
    }
}
Quartz輪訓(xùn)方式

Quartz輪訓(xùn)任務(wù),需要配置一個(gè)參數(shù),這個(gè)參數(shù)來控制Job任務(wù)是否并行,這個(gè)參數(shù)是concurrent。默認(rèn)是true,如果concurrent設(shè)為true,到了指定的時(shí)間就如去執(zhí)行,不管上一次有沒有執(zhí)行完。

  
      
          
      
      
        execute  
      
      
        false  
      
  
任務(wù)監(jiān)聽器

TriggerListeners and JobListeners 兩個(gè)接口分別是觸發(fā)器相關(guān)的監(jiān)聽接口和作業(yè)相關(guān)監(jiān)聽接口。
用來監(jiān)聽監(jiān)聽點(diǎn)之前,之中,之后需要處理的事情。
此外,也可以直接繼承JobListenerSupport or TriggerListenerSupport

并且在配置文件添加以下內(nèi)容來生效監(jiān)聽器:



    

除了可以配置全局的,也可以根據(jù)業(yè)務(wù)按個(gè),按組配置監(jiān)聽器。

Quartz 2.3.0

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68319.html

相關(guān)文章

  • springboot整合quarzt實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)

    摘要:而我這里定時(shí)任務(wù)的觸發(fā)是要通過接口的方式來觸發(fā),所以只用實(shí)現(xiàn)以下的調(diào)度器即可。我這里簡(jiǎn)單說下任務(wù)的調(diào)度器,具體的任務(wù)類,觸發(fā)器,任務(wù)什么時(shí)候執(zhí)行是由它決定的。遇到的坑解決方式這個(gè)是因?yàn)椴患嫒莸膯栴},所以使用是不會(huì)出現(xiàn)這個(gè)錯(cuò)誤的。 實(shí)現(xiàn)定時(shí)任務(wù)的幾種方式: 1.使用linux的crontab 優(yōu)點(diǎn): 1.使用方式很簡(jiǎn)單,只要在crontab中寫好 2.隨時(shí)可以修改,不需要...

    hoohack 評(píng)論0 收藏0
  • Springboot整合Quartz實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)

    摘要:本文使用實(shí)現(xiàn)對(duì)定時(shí)任務(wù)的增刪改查啟用停用等功能。并把定時(shí)任務(wù)持久化到數(shù)據(jù)庫以及支持集群。決定什么時(shí)候來執(zhí)行任務(wù)。定義的是任務(wù)數(shù)據(jù),而真正的執(zhí)行邏輯是在中。封裝定時(shí)任務(wù)接口添加一個(gè)暫停恢復(fù)刪除修改暫停所有恢復(fù)所有 簡(jiǎn)介 Quartz是一款功能強(qiáng)大的任務(wù)調(diào)度器,可以實(shí)現(xiàn)較為復(fù)雜的調(diào)度功能,如每月一號(hào)執(zhí)行、每天凌晨執(zhí)行、每周五執(zhí)行等等,還支持分布式調(diào)度。本文使用Springboot+Myba...

    IamDLY 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<