SchedulerX adalah layanan penjadwalan pekerjaan terdistribusi di Microservices Engine (MSE). Layanan ini menggunakan arsitektur server-agent: server SchedulerX menangani penjadwalan dan koordinasi, sedangkan agent yang tertanam dalam aplikasi Spring Boot Anda menjalankan pekerjaan. Setelah menghubungkan aplikasi Anda, Anda dapat mendefinisikan, menjadwalkan, dan memantau pekerjaan dari konsol SchedulerX.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
Proyek Spring Boot 2.x atau 3.x
(Opsional) namespace untuk isolasi resource — lihat bagian "Buat namespace" di Manajemen namespace
Langkah 1: Buat aplikasi SchedulerX
Konfigurasikan pengaturan dasar
Login ke Konsol MSE SchedulerX dan pilih wilayah di bilah navigasi atas.
Di panel navigasi sebelah kiri, klik Application Management, pilih Namespace, lalu klik Create Application.
Masukkan pengaturan berikut dan klik Next.
PentingBuat resource di wilayah dan namespace yang benar. Pastikan informasi resource valid.
Setting Description Default Application Name Nama deskriptif untuk aplikasi. None Application ID GroupID untuk akses agen. Harus unik dalam namespace dan dapat sesuai dengan Application Name. None Application Type Regular App — tidak dideploy di Kubernetes atau tidak memerlukan pekerjaan Kubernetes. k8s App — dideploy di Kubernetes dan memerlukan pekerjaan Kubernetes. Regular App Edition Pilih edisi sesuai kebutuhan Anda. Professional Edition Simple Log Service Aktifkan untuk melihat log penjadwalan di konsol. Memerlukan konfigurasi Log4j atau Logback. Off load5 Rata-rata beban maksimum selama 5 menit. Tidak boleh melebihi jumlah core CPU pada mesin client. 0 Memory Usage Jika rata-rata penggunaan memori dalam 5 menit terakhir melebihi ambang batas ini, worker ditandai sebagai sibuk. 90% Disk Usage Jika penggunaan disk melebihi ambang batas ini, mesin client ditandai sebagai sibuk. 95% Trigger Busy Machine Lanjutkan memicu pekerjaan saat mesin sedang sibuk. On Setting Description Default Maximum Number Of Jobs Jumlah maksimum pekerjaan yang didukung dalam satu grup. 1000 Automatic Scale-out Aktifkan untuk auto-scale. Memerlukan Global Job Count. Off Traffic Throttling Aktifkan untuk throttle traffic. Memerlukan Task Instance Concurrency. Off Calendar Jadwalkan menggunakan Financial Day (hari perdagangan) atau Workday (hari kerja). 0 
Konfigurasikan notifikasi
Pada halaman Notification Configuration, pilih Notification Channel dan atur Contacts. Tambahkan kontak secara individual atau gunakan grup kontak. Untuk membuat grup kontak, lihat Buat kontak notifikasi atau grup kontak notifikasi.
Setting Description Notification Channel Text Message, Email, Webhook, atau Phone. Email Alamat email kontak. Webhook URL webhook untuk WeCom, Lark, atau DingTalk. Pisahkan beberapa URL dengan koma (,). Untuk DingTalk, tambahkan kata kunci "SchedulerX" (case-sensitive) ke konfigurasi robot. Untuk detail pengaturan webhook, lihat Deskripsi konfigurasi webhook. Untuk informasi cara mendapatkan URL webhook, lihat Dokumentasi Developer DingTalk, Dokumentasi Developer WeCom, dan Dokumentasi Developer Lark. Mobile Phone Number Nomor telepon kontak. 
Segarkan halaman dan pastikan aplikasi Anda muncul di bawah wilayah dan namespace yang dipilih.
Langkah 2: Tambahkan dependensi SchedulerX
Tambahkan dependensi schedulerx2-spring-boot-starter ke file pom.xml proyek Spring Boot Anda:
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.11.5</version> <!-- Ganti dengan versi terbaru -->
</dependency>Ganti versi dengan versi agent terbaru. Untuk riwayat versi, lihat Catatan rilis agent.
Jika proyek Anda menggunakan Logback, kecualikan dependensi Log4j yang disertakan:
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>1.11.5</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>Langkah 3: Konfigurasikan parameter koneksi
Tambahkan properti berikut ke application.properties:
# Wajib: Pengaturan koneksi SchedulerX
spring.schedulerx2.endpoint=${endpoint}
spring.schedulerx2.namespace=${namespace}
spring.schedulerx2.groupId=${groupId}
# Parameter appKey hanya didukung di versi 1.2.1 dan yang lebih baru.
spring.schedulerx2.appKey=${appKey}
# Jika Anda tidak menggunakan appKey, Anda dapat menggunakan AccessKey dan SecretKey Alibaba Cloud, atau token STS.
#spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey}
#spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey}
#spring.schedulerx2.stsToken=${aliyunStsToken}Sumber parameter:
Login ke Konsol SchedulerX. Di panel navigasi sebelah kiri, klik Applications. Temukan aplikasi yang ingin Anda kelola dan klik AccessConfig di kolom Operation. Di panel AccessConfig, pilih Spring Boot dari dropdown.

Deskripsi parameter:
endpoint: Titik akhir SchedulerxWorker. Nilainya harus sesuai dengan titik akhir wilayah tempat aplikasi Anda dideploy. Untuk informasi lebih lanjut, lihat Endpoints.
namespace: ID namespace tempat aplikasi berada. Anda dapat melihat ID namespace di halaman Namespaces di konsol SchedulerX.

groupId dan appKey: ID dan kunci aplikasi. Anda dapat melihat nilainya di halaman Applications di konsol SchedulerX.

aliyunAccessKey dan aliyunSecretKey: ID AccessKey dan Rahasia AccessKey Akun Alibaba Cloud Anda. Anda dapat melihat pasangan Kunci Akses di halaman Security Management di Konsol Manajemen Pengguna.
SchedulerX dan agent harus berada di wilayah yang sama. Ketidaksesuaian wilayah menyebabkan kegagalan koneksi. Jika aplikasi dijalankan di luar Alibaba Cloud (on-premises atau penyedia cloud lain), aktifkan akses Internet dan buat aplikasi SchedulerX di wilayah Internet. Lihat Hubungkan ke SchedulerX melalui Internet dari lingkungan on-premises.
Jika aplikasi menggunakan YAML, tambahkan pengaturan ini ke application.yml sebagai gantinya:
spring:
schedulerx2:
endpoint: ${endpoint}
namespace: ${namespace}
groupId: ${groupId}
appKey: ${appKey}Untuk mengelola beberapa aplikasi dari satu client, pisahkan ID aplikasi dengan koma: spring.schedulerx2.groupId=animals.dog,animals.cat. Setiap aplikasi diisolasi untuk pengelolaan izin dan tidak memerlukan worker terpisah.
Parameter opsional
Parameter berikut mendukung kasus penggunaan lanjutan:
| Parameter | Description | Default | Since |
|---|---|---|---|
spring.schedulerx2.enabled | Aktifkan atau nonaktifkan starter SchedulerX. | true | 0.1.7 |
spring.schedulerx2.host | Tentukan alamat IP saat mesin memiliki beberapa NIC atau menggunakan VPN. | Auto-detected | 0.1.7 |
spring.schedulerx2.port | Port yang digunakan agent untuk mendengarkan. | Random available port | 0.1.7 |
spring.schedulerx2.blockAppStart | Blokir startup aplikasi jika SchedulerX gagal diinisialisasi. | true | 1.1.0 |
spring.schedulerx2.shareContainerPool | Izinkan semua pekerjaan pada agent berbagi satu kolam thread. | false | 1.2.1.2 |
spring.schedulerx2.sharePoolSize | Ukuran kolam thread saat berbagi diaktifkan. | 64 | 1.2.1.2 |
spring.schedulerx2.label | Label untuk menargetkan worker tertentu selama rilis canary atau uji stres. | None | 1.2.2.2 |
spring.schedulerx2.enableCgroupMetrics | Gunakan cgroup untuk mengumpulkan metrik agent. Aktifkan secara manual di lingkungan Kubernetes. | false | 1.2.2.2 |
spring.schedulerx2.cgroupPathPrefix | Path cgroup di dalam container. | /sys/fs/cgroup/cpu/ | 1.2.2.2 |
spring.schedulerx2.enableHeartbeatLog | Catat data heartbeat ke ${user.home}/logs/schedulerx/heartbeat.log. | true | 1.2.4 |
spring.schedulerx2.mapMasterStatusCheckInterval | Interval (ms) untuk memeriksa penyelesaian tugas dalam model Map. Nilai yang lebih rendah meningkatkan frekuensi penjadwalan untuk pekerjaan granularitas detik. | 3000 | 1.2.5.2 |
spring.schedulerx2.enableSecondDelayCycleIntervalMs | Interpretasikan interval pekerjaan granularitas detik dalam milidetik, bukan detik. | false | 1.2.5.2 |
spring.schedulerx2.broadcastMasterExecEnable | Wajibkan node primer untuk menjalankan pekerjaan broadcast. | true | 1.8.13 |
spring.schedulerx2.broadcastDispatchRetryTimes | Jumlah maksimum percobaan ulang setelah pengiriman broadcast gagal. Interval percobaan ulang tetap 2 detik. | 3 | 1.8.13 |
spring.schedulerx2.enableSecondDelayStandaloneDispatch | Aktifkan pengiriman pekerjaan standalone granularitas detik. | false | 1.8.13 |
Langkah 4: Buat processor pekerjaan
Buat kelas yang memperluas JavaProcessor untuk mendefinisikan logika pekerjaan. Contoh berikut mencetak pesan setiap kali dijalankan:
package com.aliyun.schedulerx.test.job;
import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import com.alibaba.schedulerx.worker.processor.ProcessResult;
import org.springframework.stereotype.Component;
@Component
public class MyHelloJob extends JavaProcessor {
@Override
public ProcessResult process(JobContext context) throws Exception {
System.out.println("hello schedulerx2.0");
return new ProcessResult(true); // Kembalikan true untuk menunjukkan keberhasilan
}
}@Componentmendaftarkan kelas sebagai bean Spring sehingga SchedulerX dapat menemukannya.Perluas
JavaProcessordan overrideprocessuntuk mendefinisikan logika pekerjaan.Kembalikan
new ProcessResult(true)untuk keberhasilan ataunew ProcessResult(false)untuk kegagalan.
Langkah 5: Verifikasi koneksi
Jalankan aplikasi Spring Boot Anda.
Login ke Konsol MSE SchedulerX. Di panel navigasi sebelah kiri, klik Applications.
Temukan aplikasi Anda dan klik View instances di kolom Operation.

Periksa kolom Total number of instances:
0: Koneksi gagal. Periksa parameter konfigurasi Anda (wilayah, endpoint, namespace, dan GroupID) dan verifikasi konektivitas jaringan.
Lebih dari 0: Koneksi berhasil.
Langkah selanjutnya
Setelah koneksi diverifikasi, buat pekerjaan di konsol SchedulerX untuk memicu processor pekerjaan Anda. Lihat bagian "Buat pekerjaan" di Manajemen pekerjaan.
Pemecahan masalah
| Symptom | Possible cause | Solution |
|---|---|---|
| Agent gagal terhubung (0 instans) | Ketidaksesuaian wilayah antara SchedulerX dan agent | Pastikan keduanya menggunakan wilayah yang sama. Periksa nilai endpoint terhadap Endpoints. |
| Agent gagal terhubung (0 instans) | Aplikasi dijalankan di luar Alibaba Cloud tanpa endpoint Internet | Aktifkan akses Internet dan buat aplikasi SchedulerX di wilayah Internet. Lihat Hubungkan melalui Internet. |
| Agent gagal terhubung (0 instans) | GroupID atau AppKey salah | Buka Applications > AccessConfig di konsol dan konfirmasi nilainya. |
| Startup aplikasi diblokir | SchedulerX gagal diinisialisasi dengan blockAppStart=true (default) | Atur spring.schedulerx2.blockAppStart=false agar aplikasi dapat dimulai tanpa SchedulerX, atau perbaiki masalah koneksi terlebih dahulu. |
Lihat juga
Hubungkan agent ke SchedulerX — metode koneksi lain (non-Spring Boot)