扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

SpringBoot鏁村悎浠诲姟璋冨害妗嗘灦Quartz鍙婃寔涔呭寲閰嶇疆

扬州沐宇科技
2024-01-08 17:00:45
Quartz, springboot

Spring Boot鎻愪緵浜嗗Quartz浠诲姟璋冨害妗嗘灦鐨勬暣鍚堟敮鎸併€俀uartz鏄竴涓姛鑳藉己澶х殑浠诲姟璋冨害妗嗘灦锛屽彲浠ョ敤浜庡畾鏃舵墽琛屼换鍔°€佽鍒掍换鍔$瓑銆?/p>

瑕佹暣鍚圦uartz锛岄鍏堥渶瑕佹坊鍔燪uartz鐨勪緷璧栥€傚湪pom.xml鏂囦欢涓坊鍔犱互涓嬩緷璧栵細

<!-- Quartz -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
</dependency>

鎺ヤ笅鏉ワ紝鍒涘缓涓€涓猀uartz鐨勯厤缃被锛岀敤浜庨厤缃甉uartz鐨勭浉鍏冲睘鎬у拰浠诲姟璋冨害銆?/p>

@Configuration
public class QuartzConfig {

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        
        // 璁剧疆瑙﹀彂鍣?/span>
        schedulerFactoryBean.setTriggers(trigger1().getObject(), trigger2().getObject());
        
        // 璁剧疆浠诲姟
        schedulerFactoryBean.setJobDetails(jobDetail1().getObject(), jobDetail2().getObject());
        
        // 璁剧疆鑷姩鍚姩
        schedulerFactoryBean.setAutoStartup(true);
        
        return schedulerFactoryBean;
    }
    
    @Bean
    public JobDetailFactoryBean jobDetail1() {
        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
        jobDetailFactoryBean.setJobClass(MyJob1.class);
        jobDetailFactoryBean.setDurability(true);
        jobDetailFactoryBean.setRequestsRecovery(true);
        return jobDetailFactoryBean;
    }
    
    @Bean
    public JobDetailFactoryBean jobDetail2() {
        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
        jobDetailFactoryBean.setJobClass(MyJob2.class);
        jobDetailFactoryBean.setDurability(true);
        jobDetailFactoryBean.setRequestsRecovery(true);
        return jobDetailFactoryBean;
    }
    
    @Bean
    public CronTriggerFactoryBean trigger1() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetail1().getObject());
        cronTriggerFactoryBean.setCronExpression("0/5 * * * * ?");
        return cronTriggerFactoryBean;
    }
    
    @Bean
    public CronTriggerFactoryBean trigger2() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(jobDetail2().getObject());
        cronTriggerFactoryBean.setCronExpression("0/10 * * * * ?");
        return cronTriggerFactoryBean;
    }
}

鍦ㄤ笂闈㈢殑閰嶇疆绫讳腑锛屾垜浠垱寤轰簡涓や釜JobDetail鍜屼袱涓狢ronTrigger锛屽苟灏嗗畠浠坊鍔犲埌SchedulerFactoryBean涓€傝繖鏍凤紝褰撳簲鐢ㄥ惎鍔ㄦ椂锛孮uartz浼氭牴鎹厤缃殑瑙﹀彂鍣ㄥ拰浠诲姟鏉ユ墽琛屽畾鏃朵换鍔°€?/p>

鏈€鍚庯紝鍒涘缓涓や釜Job绫伙紝鐢ㄤ簬澶勭悊鍏蜂綋鐨勪换鍔¢€昏緫銆?/p>

public class MyJob1 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 浠诲姟閫昏緫
    }
}

public class MyJob2 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 浠诲姟閫昏緫
    }
}

杩欐牱锛屽氨瀹屾垚浜哠pring Boot鏁村悎Quartz浠诲姟璋冨害妗嗘灦鐨勯厤缃€?/p>

濡傛灉闇€瑕佸皢浠诲姟璋冨害鐨勯厤缃繘琛屾寔涔呭寲锛屽彲浠ヤ娇鐢≦uartz鎻愪緵鐨凧obStore鏉ュ疄鐜般€傚父鐢ㄧ殑JobStore鏈変互涓嬪嚑绉嶏細

  • RAMJobStore锛氬皢浠诲姟璋冨害鐨勯厤缃繚瀛樺湪鍐呭瓨涓紝搴旂敤鍏抽棴鍚庢暟鎹皢涓㈠け銆?/li>
  • JDBCJobStore锛氬皢浠诲姟璋冨害鐨勯厤缃繚瀛樺湪鏁版嵁搴撲腑锛屽簲鐢ㄥ叧闂悗鏁版嵁浠嶇劧瀛樺湪銆?/li>
  • JobStoreCMT锛氬皢浠诲姟璋冨害鐨勯厤缃繚瀛樺湪鏁版嵁搴撲腑锛屽苟涓旀敮鎸佸鍣ㄧ鐞嗙殑浜嬪姟銆?/li>

瑕佷娇鐢↗DBCJobStore杩涜鎸佷箙鍖栭厤缃紝鍙互娣诲姞浠ヤ笅渚濊禆锛?/p>

<!-- Quartz JDBC -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jdbc</artifactId>
</dependency>

<!-- H2 Database -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

鎺ョ潃锛屽湪Quartz鐨勯厤缃被涓坊鍔犱互涓嬩唬鐮侊細

@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
    // ...
    
    // 璁剧疆鎸佷箙鍖栭厤缃?/span>
    schedulerFactoryBean.setDataSource(dataSource());
    schedulerFactoryBean.setJobFactory(jobFactory());
    
    return schedulerFactoryBean;
}

@Bean
public DataSource dataSource()

上一条:asp定义数组详解

扫码添加客服微信