最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot整合quartz實(shí)例demo

 更新時(shí)間:2022年02月15日 15:09:59   作者:東楚  
Quartz是一個(gè)開(kāi)源的任務(wù)調(diào)度框架?;诙〞r(shí)、定期的策略來(lái)執(zhí)行任務(wù)是它的核心功能,比如x年x月的每個(gè)星期五上午8點(diǎn)到9點(diǎn),每隔10分鐘執(zhí)行1次,本文重點(diǎn)給大家介紹springboot整合quartz的實(shí)例代碼,感興趣的朋友一起看看吧

一、quartz簡(jiǎn)介

1.Quartz是一個(gè)開(kāi)源的任務(wù)調(diào)度框架。基于定時(shí)、定期的策略來(lái)執(zhí)行任務(wù)是它的核心功能,比如x年x月的每個(gè)星期五上午8點(diǎn)到9點(diǎn),每隔10分鐘執(zhí)行1次。

2.Quartz有3個(gè)核心要素:調(diào)度器(Scheduler)、任務(wù)(Job)、觸發(fā)器(Trigger)。

2.1.Job(任務(wù)):是一個(gè)接口,有一個(gè)方法void execute(),可以通過(guò)實(shí)現(xiàn)該接口來(lái)定義需要執(zhí)行的任務(wù)(具體的邏輯代碼)。
2.2.JobDetail:Quartz每次執(zhí)行job時(shí),都重新創(chuàng)建一個(gè)Job實(shí)例,會(huì)接收一個(gè)Job實(shí)現(xiàn)類(lèi),以便運(yùn)行的時(shí)候通過(guò)newInstance()的反射調(diào)用機(jī)制去實(shí)例化Job.JobDetail是用來(lái)描述Job實(shí)現(xiàn)類(lèi)以及相關(guān)靜態(tài)信息,比如任務(wù)在scheduler中的組名等信息。
2.3.Trigger(觸發(fā)器):描述觸發(fā)Job執(zhí)行的時(shí)間觸發(fā)規(guī)則實(shí)現(xiàn)類(lèi)SimpleTrigger和CronTrigger可以通過(guò)crom表達(dá)式定義出各種復(fù)雜的調(diào)度方案。
2.4.Calendar:是一些日歷特定時(shí)間的集合。一個(gè)Trigger可以和多個(gè) calendar關(guān)聯(lián),比如每周一早上10:00執(zhí)行任務(wù),法定假日不執(zhí)行,則可以通過(guò)calendar進(jìn)行定點(diǎn)排除。
2.5.Scheduler(調(diào)度器):代表一個(gè)Quartz的獨(dú)立運(yùn)行容器。Trigger和JobDetail可以注冊(cè)到Scheduler中。Scheduler可以將Trigger綁定到某一JobDetail上,這樣當(dāng)Trigger被觸發(fā)時(shí),對(duì)應(yīng)的Job就會(huì)執(zhí)行。一個(gè)Job可以對(duì)應(yīng)多個(gè)Trigger,但一個(gè)Trigger只能對(duì)應(yīng)一個(gè)Job.

二、demo結(jié)構(gòu)

三、代碼詳解

pom.xml

<!--spring boot集成quartz-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

DateTimeJob.java(具體的業(yè)務(wù)邏輯代碼寫(xiě)在這里)
job任務(wù)中執(zhí)行邏輯代碼實(shí)現(xiàn)任務(wù)的定時(shí)使用

public class DateTimeJob extends QuartzJobBean {
 
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //獲取JobDetail中關(guān)聯(lián)的數(shù)據(jù)
        String msg = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("msg");
        System.out.println("current time :"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "---" + msg);
    }
}

QuartzConfig.java(配置類(lèi))
類(lèi)中定義job執(zhí)行周期及詳細(xì)配置

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail printTimeJobDetail(){
        return JobBuilder.newJob(DateTimeJob.class)//PrintTimeJob我們的業(yè)務(wù)類(lèi)
                .withIdentity("DateTimeJob")//可以給該JobDetail起一個(gè)id
                //每個(gè)JobDetail內(nèi)都有一個(gè)Map,包含了關(guān)聯(lián)到這個(gè)Job的數(shù)據(jù),在Job類(lèi)中可以通過(guò)context獲取
                .usingJobData("msg", "Hello Quartz")//關(guān)聯(lián)鍵值對(duì)
                .storeDurably()//即使沒(méi)有Trigger關(guān)聯(lián)時(shí),也不需要?jiǎng)h除該JobDetail
                .build();
    }
    @Bean
    public Trigger printTimeJobTrigger() {
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * * * * ?");
        return TriggerBuilder.newTrigger()
                .forJob(printTimeJobDetail())//關(guān)聯(lián)上述的JobDetail
                .withIdentity("quartzTaskService")//給Trigger起個(gè)名字
                .withSchedule(cronScheduleBuilder)
                .build();
    }
}

四、代碼效果

到此這篇關(guān)于springboot整合quartz的文章就介紹到這了,更多相關(guān)springboot整合quartz內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南丰县| 迁安市| 陕西省| 洛隆县| 阳信县| 沾益县| 卓尼县| 伊通| 弥渡县| 三门县| 武义县| 封丘县| 高碑店市| 兴山县| 蒙城县| 平阴县| 缙云县| 遵义市| 柳州市| 郁南县| 江永县| 鄱阳县| 德钦县| 修武县| 色达县| 灵武市| 平泉县| 建宁县| 枝江市| 满城县| 龙川县| 肇庆市| 湄潭县| 莱阳市| 含山县| 乌拉特中旗| 五原县| 绥化市| 陆良县| 三河市| 司法|