Pekerjaan HTTP SchedulerX memerlukan agen untuk penjadwalan. Mode eksekusi serverless memerlukan nama domain publik, yang menimbulkan risiko stabilitas dan keamanan. Kami merekomendasikan penggunaan pekerjaan HTTP XXL-JOB.
Prasyarat
-
Mode eksekusi serverless: Memicu pekerjaan HTTP menggunakan fungsi cloud atau arsitektur serverless. Mode ini cocok untuk panggilan API publik dan tugas ringan.
-
Mode eksekusi agen: Menjalankan pekerjaan HTTP menggunakan agen SchedulerX yang diinstal pada perangkat target. Anda harus terlebih dahulu men-deploy agen SchedulerX. Mode ini cocok untuk panggilan layanan internal dan skenario pemrosesan kompleks.
Anda dapat memilih serverless atau agent sebagai nilai parameter mode eksekusi saat membuat pekerjaan HTTP di konsol.
Mode eksekusi
Tabel berikut membandingkan pekerjaan HTTP SchedulerX dan pekerjaan HTTP MSE-XXLJOB.
|
SchedulerX serverless (Tidak Didukung Lagi) |
SchedulerX agent |
MSE-XXL-JOB |
|
|
Client required |
Tidak. Permintaan dimulai oleh server. |
Ya. Server mengirim perintah ke client, yang kemudian memulai panggilan. |
Tidak. Permintaan dimulai oleh server. |
|
Request method |
Saat ini, hanya GET dan POST yang didukung. Metode lain akan didukung berdasarkan permintaan pengguna. |
||
|
Request definition |
Hanya mendukung pengaturan cookie dan parameter POST. |
Mendukung semua pengaturan parameter pekerjaan HTTP, termasuk Header, Query, dan Body. |
|
|
Response definition |
|
||
|
Second-level scheduling |
Tidak. Hanya mendukung penjadwalan tingkat menit. |
Ya |
Ya |
|
Internal URL support |
Tidak |
Ya |
|
|
Domain name requirement |
Tidak |
Ya. Mendukung akses Kubernetes Service tanpa memerlukan gerbang atau nama domain. |
|
|
Broadcast sharding support |
Tidak |
Ya |
|
|
Task name parsing |
Jika nama tugas berisi karakter Tionghoa, backend dapat mendekode-nya menggunakan |
||
Buat pekerjaan HTTP
Anda dapat membuat pekerjaan HTTP menggunakan metode permintaan GET atau POST.
Langkah 1: Konfigurasi dasar
GET
-
Deploy layanan HTTP yang dapat diakses.
-
Jika Anda sudah memiliki layanan HTTP yang dapat diakses, lanjutkan ke Langkah 2 untuk membuat pekerjaan HTTP di konsol SchedulerX. Siapkan URL layanan HTTP target, metode permintaan (GET atau POST), dan informasi konfigurasi relevan lainnya.
-
Jika Anda belum men-deploy layanan HTTP, rujuk kode contoh Java berikut untuk mengembangkan antarmuka HTTP:
@GET @Path("hi") @Produces(MediaType.APPLICATION_JSON) public RestResult hi(@QueryParam("user") String user) { TestVo vo = new TestVo(); vo.setName(user); RestResult result = new RestResult(); result.setCode(200); result.setData(vo); return result; }
-
-
Buat pekerjaan HTTP di konsol SchedulerX.
Berikut adalah konfigurasi relevan untuk pekerjaan HTTP GET. Untuk informasi lebih lanjut tentang cara membuat pekerjaan terjadwal, lihat Buat pekerjaan terjadwal. Konfigurasikan parameter berikut: atur Task name menjadi
http_get, pilih Http untuk Task type, masukkan alamat permintaan target di bidang Full URL, pilih GET untuk Request method, pilih Custom JSON untuk response analysis mode, masukkancodeuntuk Return Check Key, masukkan200untuk Return Check Value, atur Execution Timeout menjadi10detik, dan pilih serverless untuk execution mode.
POST
-
Deploy layanan HTTP yang dapat diakses.
-
Jika Anda sudah memiliki layanan HTTP yang dapat diakses, lanjutkan ke Langkah 2 untuk membuat pekerjaan HTTP di konsol SchedulerX. Siapkan URL layanan HTTP target, metode permintaan (GET atau POST), dan informasi konfigurasi relevan lainnya.
-
Jika Anda belum men-deploy layanan HTTP, rujuk kode contoh Java berikut untuk mengembangkan antarmuka HTTP:
import com.alibaba.schedulerx.common.constants.CommonConstants; @POST @Path("createUser") @Produces(MediaType.APPLICATION_JSON) public RestResult createUser(@FormParam("userId") String userId, @FormParam("userName") String userName) { TestVo vo = new TestVo(); System.out.println("userId=" + userId + ", userName=" + userName); vo.setName(userName); RestResult result = new RestResult(); result.setCode(200); result.setData(vo); return result; }
-
-
Buat pekerjaan HTTP di konsol SchedulerX.
Berikut adalah konfigurasi relevan untuk pekerjaan HTTP POST. Untuk informasi lebih lanjut tentang cara membuat pekerjaan terjadwal, lihat Buat pekerjaan terjadwal. Atur Task name menjadi
http_post, pilih Http untuk Task type, masukkan alamat antarmuka target di bidang Full URL, pilih POST untuk Request method, pilih Custom JSON untuk response analysis mode, masukkancodeuntuk Return Check Key, masukkan200untuk Return Check Value, atur Execution Timeout menjadi10detik, pilih application/x-www-form-urlencoded untuk ContentType, masukkan POST parameters dalam formatkey1=value1&key2=value2, dan pilih serverless untuk execution mode.
Parameter untuk pekerjaan HTTP serverless dan agent:
Parameter konfigurasi untuk mode eksekusi serverless dan agent sama di konsol SchedulerX.
|
Parameter |
Deskripsi |
|
Name |
Nama kustom pekerjaan. |
|
Description |
Deskripsi singkat tujuan bisnis pekerjaan untuk memudahkan pencarian di masa depan. |
|
Application ID |
Kelompok tempat pekerjaan tersebut berada. Anda dapat memilih salah satu dari daftar drop-down. |
|
Job Type |
Jenis pekerjaan. Untuk skenario ini, pilih HTTP. |
|
Full URL |
Masukkan URL lengkap yang dimulai dengan |
|
Request method |
Pilih GET atau POST. |
|
Response analysis mode |
Pilih mode analisis respons. Mode yang didukung sebagai berikut:
|
|
Jika Anda memilih HTTP Response Code untuk response analysis mode: |
|
|
HTTP response code |
Tetapkan kode respons HTTP yang diharapkan. Nilai default adalah 200. |
|
Jika Anda memilih Custom JSON untuk response analysis mode: |
|
|
Return check key |
Hanya mendukung nilai kembali JSON. Kunci yang diperiksa untuk respons sukses. |
|
Return check value |
Hanya mendukung nilai kembali JSON. Nilai yang diperiksa untuk respons sukses. |
|
Jika Anda memilih Custom String untuk response analysis mode: |
|
|
Custom string |
Tetapkan string kustom. |
|
Execution timeout |
|
|
Content type |
Saat Request method adalah POST, menentukan format data dari badan permintaan. Format yang didukung:
|
|
POST parameters |
Saat Request method adalah POST, menentukan parameter formulir POST. Contoh:
|
|
Cookie |
Contohnya, |
|
Execution mode |
|
|
Konfigurasi Lanjutan |
|
|
Task Failure Retry Count |
Jumlah kali percobaan ulang setelah pekerjaan gagal. Nilai default adalah 0. |
|
Retry Interval |
Interval antar percobaan ulang setelah pekerjaan gagal. Nilai default adalah 30 detik. |
|
Task Concurrency |
Jumlah maksimum instans pekerjaan yang sama yang diizinkan berjalan secara konkuren. Nilai 1 mencegah eksekusi konkuren. Jika batas konkurensi terlampaui, jadwal saat ini dilewati. |
|
Cleanup Policy |
Kebijakan pembersihan untuk riwayat eksekusi Pekerjaan. Secara default, kebijakan ini menyimpan N Catatan terakhir, di mana N adalah Record Count.
|
|
Record Count |
Jumlah catatan eksekusi historis yang disimpan untuk pekerjaan. Nilai default adalah 300. |
Langkah 2: Konfigurasi waktu
Pada halaman Schedule Configuration wizard penyiapan, atur parameter waktu dan parameter Konfigurasi Lanjutan, lalu klik Next.
Parameter waktu dijelaskan di bawah ini:
|
Parameter |
Deskripsi |
|
Time Type |
|
|
Cron Expression (hanya untuk tipe waktu cron) |
Masukkan ekspresi cron. Anda dapat menulisnya langsung mengikuti sintaks Cron atau menggunakan alat untuk menghasilkan dan memvalidasinya. |
|
Fixed frequency (hanya untuk tipe waktu fixed_rate) |
Masukkan frekuensi tetap dalam detik. Nilai harus 60 detik atau lebih. Misalnya, 200 berarti menjadwalkan setiap 200 detik. |
|
Fixed delay (hanya untuk tipe waktu second_delay) |
Masukkan penundaan tetap dalam detik. Rentangnya dari 1 hingga 60 detik. Misalnya, 5 berarti penundaan 5 detik sebelum memicu jadwal. |
|
Scheduled Time (hanya untuk tipe waktu sekali jalan) |
Pilih tanggal dan waktu. Misalnya, |
|
Konfigurasi Lanjutan |
|
|
Time offset |
Offset waktu data relatif terhadap waktu jadwal. Anda dapat memperoleh nilai ini dari konteks selama penjadwalan. |
|
Time Zone |
Anda dapat memilih zona waktu berbeda sesuai kebutuhan, termasuk negara atau wilayah umum, serta format GMT standar. |
|
Calendar |
Tetapkan kalender efektif untuk pekerjaan.
|
|
Effective Time |
Tetapkan waktu efektif untuk pekerjaan.
|
Langkah 3: Konfigurasi notifikasi
Pekerjaan HTTP mendukung peringatan kegagalan. Ketika terjadi masalah seperti timeout atau nilai kembali yang tidak sesuai, Anda dapat mengatur aturan peringatan saat pembuatan pekerjaan untuk menerima notifikasi yang sesuai.
-
Pada halaman Notification Configuration wizard penyiapan, atur parameter peringatan dan kontak, lalu klik Complete.
Parameter yang dapat dikonfigurasi meliputi: Timeout alert (diaktifkan), Timeout period (dalam detik), Terminate on timeout (dinonaktifkan), Success notification (dinonaktifkan), Failure alert (diaktifkan), Consecutive failures (diatur ke 1), dan No available machine alert (diaktifkan). Untuk Notification channels and contacts, Anda dapat memilih Application group contacts atau Custom.
-
Setelah pekerjaan berhasil dibuat, buka halaman Task management dan klik Run Once pada kolom Actions untuk pekerjaan target.
Pada halaman detail catatan instans pekerjaan, lihat hasil eksekusi dan log.
Dapatkan informasi dasar pekerjaan
Informasi dasar untuk pekerjaan HTTP berada di header. Untuk mendapatkan informasi ini, Anda perlu menambahkan dependensi berikut ke file pom.xml client Anda.
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-common</artifactId>
<version>1.6.0</version>
</dependency>
Contoh berikut menunjukkan cara mendapatkan informasi dasar pekerjaan menggunakan metode GET.
import com.alibaba.schedulerx.common.constants.CommonConstants;
@GET
@Path("hi")
@Produces(MediaType.APPLICATION_JSON)
public RestResult hi(@QueryParam("user") String user,
@HeaderParam(CommonConstants.JOB_ID_HEADER) String jobId,
@HeaderParam(CommonConstants.JOB_NAME_HEADER) String jobName) {
TestVo vo = new TestVo();
vo.setName("armon");
// Jika jobName berisi karakter Tionghoa, perlu dilakukan URL-decoding.
String decodedJobName = URLDecoder.decode(jobName, "utf-8");
System.out.println("user=" + user + ", jobId=" + jobId + ", jobName=" + decodedJobName);
RestResult result = new RestResult();
result.setCode(200);
result.setData(vo);
return result;
}
Definisi konstanta pekerjaan
Tabel berikut menjelaskan informasi dasar untuk CommonConstants.
|
Konstanta |
Kunci |
Deskripsi |
|
JOB_ID_HEADER |
schedulerx-jobId |
ID pekerjaan. |
|
JOB_NAME_HEADER |
schedulerx-jobName |
Nama pekerjaan. |
|
SCHEDULE_TIMESTAMP_HEADER |
schedulerx-scheduleTimestamp |
Timestamp waktu penjadwalan. |
|
DATA_TIMESTAMP_HEADER |
schedulerx-dataTimestamp |
Timestamp waktu data. |
|
GROUP_ID_HEADER |
schedulerx-groupId |
ID aplikasi. |
|
USER_HEADER |
schedulerx-user |
Nama pengguna. |
|
MAX_ATTEMPT_HEADER |
schedulerx-maxAttempt |
Jumlah maksimum percobaan ulang untuk instans. |
|
ATTEMPT_HEADER |
schedulerx-attempt |
Jumlah percobaan ulang saat ini untuk instans. |
|
JOB_PARAMETERS_HEADER |
schedulerx-jobParameters |
Parameter pekerjaan. |
|
INSTANCE_PARAMETERS_HEADER |
schedulerx-instanceParameters |
Parameter untuk instans pekerjaan tertentu, diteruskan saat memicu pekerjaan melalui API. |
Verifikasi hasil
Anda dapat memeriksa hasil eksekusi pekerjaan HTTP di halaman daftar eksekusi. Untuk informasi tentang hasil sukses, lihat GET.
Jika pekerjaan gagal, klik Details untuk melihat alasan spesifik kegagalannya, seperti di bawah ini:
-
Nilai yang dikembalikan berbeda dari nilai yang diharapkan. Bidang Result or Error Message pada halaman detail instans menunjukkan penyebab spesifik kegagalan. Misalnya, pesan error
The returned value is different from the expected valuemenunjukkan bahwa"success":falsedalam JSON yang dikembalikan tidak sesuai dengan nilai yang diharapkan, sehingga pekerjaan gagal. -
Timeout eksekusi. Saat eksekusi pekerjaan HTTP mengalami timeout, bidang Result or Error Message pada halaman detail instans menunjukkan pengecualian
java.net.SocketTimeoutException, yang menunjukkan timeout koneksi socket.