Perkhidmatan Mikro dan API REST Spring Boot 4 · Pelajaran

Penjadualan dengan @Scheduled

Jalankan tugas pada kadar tetap atau jadual cron.

Pelajaran 1 daripada 413 langkah

Penjadualan dengan @Scheduled ialah pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.

Penjadualan dalam Spring Boot

Spring Boot membolehkan anda menjalankan kaedah secara automatik mengikut jadual tanpa daemon cron luaran. Anda menganotasi kaedah dengan @Scheduled dan Spring akan memanggilnya berulang kali di latar belakang.

  • Sesuai untuk kerja pembersihan, pengundian dan penjanaan laporan
  • Tiada infrastruktur tambahan diperlukan

Mendayakan penjadualan

Penjadualan dimatikan secara lalai. Hidupkannya dengan @EnableScheduling pada kelas konfigurasi, biasanya kelas aplikasi utama.

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableScheduling
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

fixedRate

fixedRate menjalankan kaedah pada selang tetap yang diukur daripada permulaan satu pelaksanaan hingga permulaan pelaksanaan seterusnya. Nilainya dalam milisaat.

@Component
public class RateTask {

    @Scheduled(fixedRate = 5000)
    public void report() {
        System.out.println("Runs every 5 seconds");
    }
}

fixedDelay

fixedDelay menunggu sela tetap selepas pelaksanaan sebelumnya selesai sebelum memulakan pelaksanaan seterusnya. Gunakannya apabila pelaksanaan tidak boleh bertindih.

@Scheduled(fixedDelay = 5000)
public void process() {
    // next run starts 5s AFTER this one ends
    doWork();
}

fixedRate berbanding fixedDelay

Perbezaan utama ialah titik rujukannya:

  • fixedRate = selang antara waktu mula (boleh bertindih jika pelaksanaan lambat)
  • fixedDelay = sela antara akhir pelaksanaan dan permulaan seterusnya (tidak pernah bertindih)

initialDelay

initialDelay melengahkan pelaksanaan pertama selepas permulaan aplikasi. Gabungkannya dengan fixedRate atau fixedDelay untuk mengelakkan pelaksanaan serta-merta semasa but.

@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void warmThenRun() {
    // waits 10s after startup, then every 5s
}

ungkapan cron

Untuk penjadualan berdasarkan kalendar, gunakan cron. Cron Spring mempunyai 6 medan: saat, minit, jam, hari dalam bulan, bulan dan hari dalam minggu.

@Scheduled(cron = "0 0 9 * * MON-FRI")
public void weekdayMorning() {
    // 09:00:00 every weekday
}

Membaca medan cron

Aksara asterisk * bermaksud "setiap nilai". ? boleh digunakan pada hari dalam bulan atau hari dalam minggu apabila salah satunya tidak ditentukan. Julat (MON-FRI), senarai (1,15) dan langkah (*/10) disokong.

@Scheduled(cron = "*/30 * * * * *") // every 30 seconds
public void everyHalfMinute() { }

@Scheduled(cron = "0 0 0 1 * *") // midnight on the 1st of every month
public void monthly() { }

Zon waktu

Secara lalai, cron menggunakan zon waktu pelayan. Tetapkan zone supaya jadual menjadi jelas dan konsisten merentas persekitaran.

@Scheduled(cron = "0 0 8 * * *", zone = "Europe/Istanbul")
public void eightAmIstanbul() { }

Mengasingkan Jadual

Selang yang ditetapkan terus dalam kod tidak fleksibel. Gunakan ruang letak sifat supaya jadual boleh diubah mengikut persekitaran tanpa penyusunan semula.

@Scheduled(fixedRateString = "${app.report.rate:5000}")
public void report() { }

// application.yml
// app:
//   report:
//     rate: 10000

Perangkap Penjadualan

Secara lalai, satu utas menjalankan semua tugas berjadual, jadi tugas yang lambat boleh melengahkan tugas lain. Untuk pelaksanaan selari, konfigurasikan ThreadPoolTaskScheduler. Selain itu, pastikan kaedah berjadual idempoten sekiranya berlaku permulaan semula.

Semakan Pantas

Uji pemahaman anda tentang penjadualan.

Ringkasan

Anda telah mempelajari cara menjadualkan kerja dalam Spring Boot:

  • @EnableScheduling menghidupkan ciri ini
  • fixedRate = mula-ke-mula, fixedDelay = tamat-ke-mula
  • cron mengendalikan jadual kalendar; tetapkan zone untuk kejelasan
  • Asingkan selang menggunakan ruang letak sifat
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
24
Pelajaran
93

Soalan Lazim

Adakah pelajaran “Penjadualan dengan @Scheduled” percuma?

Ya — teks penuh “Penjadualan dengan @Scheduled” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Perkhidmatan Mikro dan API REST Spring Boot 4, tingkat taraf kepada CoddyKit PRO. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penjadualan dengan @Scheduled”?

Jalankan tugas pada kadar tetap atau jadual cron. Anda berlatih Perkhidmatan Mikro dan API REST Spring Boot 4 menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Perkhidmatan Mikro dan API REST Spring Boot 4?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Penjadualan dengan @Scheduled” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 ini?

Ya. Setiap pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penjadualan dengan @Scheduled
  2. Kerja dan Langkah Spring Batch
  3. Pembaca, Pemproses dan Penulis
  4. Pemulaan Semula dan Pengendalian Ralat
← Kembali ke Perkhidmatan Mikro dan API REST Spring Boot 4