Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan Kuarza untuk melaksanakan tugas berjadual ketersediaan tinggi Java?

Bagaimana untuk menggunakan Kuarza untuk melaksanakan tugas berjadual ketersediaan tinggi Java?

WBOY
WBOYke hadapan
2023-05-07 12:55:071339semak imbas

Panduan untuk menggunakan tugas berjadual

Jika anda ingin melakukan tugas berjadual, mempunyai 高可用 keperluan atau hanya ingin menjadi 入门快 mudah untuk bermula, maka anda berhak memilihnya.

Modul tugas berjadual merangkum lagi rangka kerja Kuarza dan menjadikannya lebih mudah untuk digunakan.

1. Memperkenalkan kebergantungan

<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-quartz</artifactId>
    <version>1.5.4.1</version>
</dependency>

2 Bermula dengan cepat

melaksanakan antara muka org.quartz.Job untuk menambah strategi penjadualan tugasan CronExp kepada Tugasan disuntik ke dalam bekas. Component

Mulakan projek dan tugasan yang dijadualkan akan dipantau dan dijalankan.

@Component
@DisallowConcurrentExecution
@CronExp(cron = "0/5 * * * * ?")
public class DemoJob implements Job {
    @Override
    public void execute(JobExecutionContext context) {
        System.out.println("任务1:" + LocalDateTime.now());
    }
}

3. Cetuskan tugas berjadual secara manual

Selain berjalan secara berkala pada kekerapan sedia ada, tugas berjadual juga mempunyai keupayaan untuk dicetuskan secara manual melalui antara muka.

Panggil antara muka berikut untuk mencetuskan tugasan secara manual dengan nombor ID tugas

. jobId

http://localhost:8080/cms-api/quartz/job/{jobId}

Jika terdapat keperluan untuk mencetuskan tugas berjadual secara manual, ID tugasan

dan 唯一并 diperlukan, jadi ia perlu dinyatakan secara manual semasa menulis jadual berjadual tugasan. 已知

@CronExp(id = 1, cron = "0/5 * * * * ?")

Anda boleh menentukan ID tugas dengan menganotasi atribut id

Jika anda tidak menyatakannya secara eksplisit, ID rawak akan digunakan tidak memenuhi syarat yang diketahui, jadi ia tidak boleh dicetuskan secara manual. CronExp

4. Tugasan dengan parameter

Walaupun kebanyakan tugasan tidak memerlukan suntikan parameter, masih terdapat sebilangan kecil senario yang memerlukan suntikan parameter ke dalam tugasan yang dijadualkan.

public void execute(JobExecutionContext context) {
    /* 如果在调用任务时传入了参数,则能够从Map中获取 */
    Map<String, Object> dataMap = context.getMergedJobDataMap();
    /* 比如从Map中获取一个键值对,一般来说参数均为基本数据类型 */
    Object key = dataMap.get("key");
    System.out.println("任务2:" + LocalDateTime.now() + ": " + key);
}

Apabila menulis tugasan yang dijadualkan, anda boleh menghuraikan Peta daripada objek

untuk melengkapkan suntikan parameter. JobExecutionContext

http://localhost:8080/cms-api/quartz/job/1?key=a

Maksud panggilan http di atas adalah untuk mencetuskan tugasan secara manual dengan ID tugasan [1] dan memberikannya parameter [kunci] dengan nilai [a].

5. Keselarasan tugasan

Rangka kerja ini tidak menyokong keselarasan tugas Dengan kata lain, keselarasan tidak sesuai untuk tugasan yang dijadualkan, jadi ia perlu dilumpuhkan secara manual.

Perlu diingat bahawa keselarasan

merujuk kepada sama ada tugasan baharu akan dilaksanakan apabila masa pelaksanaan tugas melebihi kitaran penjadualan tugas dan tugasan sebelumnya belum dilaksanakan. Quartz

Secara umumnya, anda perlu memaparkan larangan penyelarasan Tambah anotasi

pada kelas tugasan untuk melumpuhkan keselarasan tugas. DisallowConcurrentExecution

6. Kegigihan

Jika tugas yang dijadualkan mempunyai keperluan ketersediaan yang tinggi, tugas itu perlu diteruskan. Selepas data tugas yang dijadualkan disimpan ke dalam pangkalan data, berbilang aplikasi boleh dibuka. Selepas penggunaan berbilang nod berterusan bagi tugas berjadual, satu kegagalan nod dalam kelompok tidak akan menjejaskan pelaksanaan tugas berjadual.

Tugas berjadual adalah berterusan Anda hanya perlu mengubah suai konfigurasi fail yml untuk mencapai matlamat, tanpa mengubah suai kod. Secara umumnya, Mysql digunakan sebagai bekas yang berterusan.

spring:
  quartz:
    properties:
      org.quartz.jobStore.isClustered: true
      org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX
      org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
      org.quartz.jobStore.dataSource: qzDS
      org.quartz.dataSource.qzDS.driver: com.mysql.cj.jdbc.Driver
      org.quartz.dataSource.qzDS.URL: jdbc:mysql://localhost:3306/quartz-demo
      org.quartz.dataSource.qzDS.user: root
      org.quartz.dataSource.qzDS.password: 123456

Kecuali untuk mengubah suai lima parameter hos, port, nama pangkalan data, nama pengguna dan kata laluan, gunakan nilai lalai untuk parameter yang tinggal.

Selepas mengkonfigurasi sambungan pangkalan data, gunakan skrip SQL dan beri perhatian untuk memulakan pangkalan data

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Kuarza untuk melaksanakan tugas berjadual ketersediaan tinggi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam