Pembangunan backend Java ialah bidang yang sangat luas dan popular kerana bahasa Java digunakan secara meluas dalam pembangunan aplikasi peringkat perusahaan. Dalam bidang ini, pembangun perlu menguasai pelbagai teknologi dan alatan untuk mencapai penulisan perisian berkualiti tinggi. Salah satu teknologi penting ialah pengurusan tugas berjadual API, dan Java Quartz ialah alat yang perlu diberi perhatian untuk mencapai tugas ini.
Java Quartz ialah rangka kerja penjadualan kerja sumber terbuka yang boleh digunakan untuk melaksanakan pelbagai keperluan penjadualan dalam aplikasi Java. Rangka kerja ini mempunyai fungsi yang sangat berkuasa dan boleh melaksanakan tugas penjadualan berdasarkan piawaian yang berbeza seperti masa, tarikh, minggu, bulan, tahun, dsb., dan juga boleh menghantar keputusan pelaksanaan tugas kepada aplikasi sebagai acara.
Untuk pembangun, menggunakan Java Quartz adalah sangat mudah dan mudah. Kami hanya perlu memperkenalkan perpustakaan pergantungan yang sepadan dan mengkonfigurasi beberapa parameter untuk menggunakannya untuk mengurus tugas berjadual API. Di bawah, kami akan memperkenalkan beberapa kaedah menggunakan Java Quartz untuk mengurus tugas berjadual API.
Pertama, kami perlu memperkenalkan perpustakaan bergantung Java Quartz ke dalam projek kami. Anda boleh menggunakan Maven untuk mengurus kebergantungan ini. Tambahkan kandungan berikut pada fail pom.xml projek:
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>x.x.x</version> </dependency>
di mana x.x.x ialah nombor versi Java Quartz. Kami boleh menyemak versi terkini di laman web rasmi Java Quartz.
Selepas memperkenalkan perpustakaan bergantung, kami perlu mencipta fail konfigurasi untuk mengkonfigurasi parameter Java Quartz. Untuk parameter konfigurasi khusus, sila lihat dokumentasi rasmi Java Quartz. Di sini kami memberikan contoh fail konfigurasi mudah:
# Quartz properties org.quartz.scheduler.wait_for_jobs_to_complete = true org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 5 # JobStore properties org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.dataSource = myDS org.quartz.jobStore.tablePrefix = QRTZ_ org.quartz.jobStore.isClustered = false # DataSource properties org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz org.quartz.dataSource.myDS.user = quartz org.quartz.dataSource.myDS.password = password
Dalam fail konfigurasi ini, kami menetapkan saiz kolam benang kepada 5, menggunakan pangkalan data MySQL sebagai penyimpanan data Kuarza, awalan jadual data ialah QRTZ_, dan juga tetapkan konfigurasi Kuarza untuk menunggu penyelesaian tugas.
Seterusnya, kita perlu mencipta tugas berjadual API. Tugas ini boleh menjadi panggilan fungsi mudah atau operasi kompleks, seperti menghantar e-mel, menjana laporan, dsb.
Dalam Java Quartz, kami boleh melaksanakan tugas berjadual API dengan mencipta kelas tugas yang melaksanakan antara muka Kerja. Dalam kelas tugas ini, kita perlu melaksanakan kaedah pelaksanaan untuk menyelesaikan operasi tugas penjadualan tertentu.
Berikut ialah contoh mudah:
package com.example.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); } }
Dalam kelas tugasan ini, kami menggunakan System.out.println untuk mencetak mesej.
Selepas mencipta kelas tugas, kita perlu mencipta pencetus untuk memutuskan masa untuk menjalankan tugasan. Dalam Java Quartz, pencetus ialah komponen yang digunakan untuk menentukan bila tugas akan dilaksanakan. Mereka boleh menjadualkan tugas berdasarkan kriteria yang berbeza, seperti masa atau tarikh.
Java Quartz menyokong pelbagai jenis pencetus. Dalam artikel ini, kami memperkenalkan jenis pencetus yang paling biasa digunakan: SimpleTrigger, CronTrigger, DailyTimeIntervalTrigger.
Antaranya, SimpleTrigger ialah jenis pencetus yang paling mudah Ia hanya akan dilaksanakan sekali atau beberapa kali berdasarkan parameter tertentu. CronTrigger ialah pencetus berdasarkan ungkapan Cron dan kami boleh menggunakannya untuk menjadualkan tugas berdasarkan corak tarikh atau masa. DailyTimeIntervalTrigger ialah pencetus berdasarkan selang masa relatif atau mutlak, yang boleh digunakan untuk melaksanakan tugas dengan kerap, seperti setiap hari, setiap jam, setiap minit, dsb.
Di bawah ini kami akan memberikan contoh mudah CronTrigger:
package com.example.quartz; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class CronTriggerExample { public static void main(String[] args) throws Exception { JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") .build(); CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
Dalam contoh ini, kami mencipta CronTrigger yang akan dijalankan setiap 5 saat. Pencetus ini akan menjadualkan tugas dengan contoh Kerja sebagai parameter. Tugasan ini ialah contoh kelas MyJob.
Akhir sekali, kita perlu menjalankan tugas ini. Kita boleh menggunakan kelas Penjadual Java Quartz untuk memulakan tugas dan menentukan masa penjadualan tugas yang sepadan. Kelas Penjadual menyediakan banyak kaedah dan sifat untuk mengawal pelaksanaan tugas, seperti pauseJob(), resumeJob(), shutdown(), dsb.
Berikut ialah contoh mudah untuk memulakan tugasan berjadual API:
package com.example.quartz; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class QuartzTest { public static void main(String[] args) throws Exception { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler scheduler = sf.getScheduler(); // start the scheduler scheduler.start(); // define the job and tie it to our MyJob class JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") .build(); // Trigger the job to run now, and then every 40 seconds Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(40) .repeatForever()) .build(); // Tell quartz to schedule the job using our trigger scheduler.scheduleJob(job, trigger); // wait until Quartz has finished executing jobs Thread.sleep(60000); // shutdown the scheduler scheduler.shutdown(true); } }
Dalam contoh ini, kami menggunakan SimpleTrigger, yang menjadualkan tugasan sekarang, dan kemudian menjadualkannya semula setiap 40 saat Tugas . Pada penghujung kaedah utama, kami tidurkan benang selama 60 saat dan kemudian gunakan kaedah scheduler.shutdown(true) untuk menghentikan tugasan.
Dengan cara ini, kami boleh melaksanakan pengurusan tugas berjadual API dengan mudah. Sama ada dalam proses pembangunan produk atau dalam operasi dan penyelenggaraan harian, Java Quartz ialah alat yang patut diberi perhatian serius.
Atas ialah kandungan terperinci Pembangunan back-end Java: Menggunakan Java Quartz untuk pengurusan tugas berjadual API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!