Topik ini menjelaskan cara menghubungkan aplikasi Go ke SchedulerX menggunakan Go SDK-nya.
Konfigurasi konsol
-
Untuk membuat aplikasi standar, lihat Buat aplikasi. Kemudian, lihat Langkah 2 untuk mendapatkan informasi konfigurasi.
Pada daftar Application Management, temukan aplikasi target, misalnya
xxl-job. Pada kolom Operation, klik connection parameters.Pilih Go sebagai bahasa. Parameter koneksi adalah sebagai berikut:
Endpoint: acm.aliyun.com, Namespace: 433d8b23-xxx-a-90d4d1b9a4af, GroupId: xxl-job-test, AppKey: b0iXMY3Bxxx+Gew== -
Untuk membuat job Go, lihat job management.
Pada langkah konfigurasi dasar, masukkan
hellogountuk Job Name, pilih Application ID, atur Job Type ke golang, atur Task Name keHelloWorld, atur execution mode ke standalone execution, dan atur Priority ke Medium.
Integrasi client
-
Jalankan perintah berikut untuk menarik versi bertag terbaru dari SchedulerX SDK untuk Go.
go get github.com/alibaba/schedulerx-worker-go@{latest_tag}Atau, jalankan perintah berikut untuk menarik branch tertentu.
go get github.com/alibaba/schedulerx-worker-go@{branch_name} -
Tulis kode bisnis untuk mengimplementasikan antarmuka
Processor.type Processor interface { Process(ctx *processor.JobContext) (*ProcessResult, error) }Contoh:
package main import ( "fmt" "github.com/alibaba/schedulerx-worker-go/processor" "github.com/alibaba/schedulerx-worker-go/processor/jobcontext" "time" ) var _ processor.Processor = &HelloWorld{} type HelloWorld struct{} func (h *HelloWorld) Process(ctx *jobcontext.JobContext) (*processor.ProcessResult, error) { fmt.Println("[Process] Start process my task: Hello world!") // mock execute task time.Sleep(3 * time.Second) ret := new(processor.ProcessResult) ret.SetStatus(processor.InstanceStatusSucceed) fmt.Println("[Process] End process my task: Hello world!") return ret, nil } -
Daftarkan client dan job tersebut. Nama task harus sesuai dengan nama yang dikonfigurasi di konsol.
package main import ( "github.com/alibaba/schedulerx-worker-go" ) func main() { // Ini hanya contoh. Anda harus memperoleh konfigurasi aktual dari konsol. cfg := &schedulerx.Config{ Endpoint: "acm.aliyun.com", Namespace: "433d8b23-xxx-xxx-xxx-90d4d1b9a4af", GroupId: "xueren_sub", AppKey: "xxxxxx", } client, err := schedulerx.GetClient(cfg) if err != nil { panic(err) } task := &HelloWorld{} // Beri nama task Anda dan daftarkan ke client. Nama tersebut harus sesuai dengan yang ada di konsol. client.RegisterTask("HelloWorld", task) select {} }
Parameter client
|
Parameter |
API |
Deskripsi |
|
Custom port |
config.WithGrpcPort |
Untuk job non-standalone, worker harus saling berkomunikasi. Anda dapat menentukan port komunikasi. Jika tidak ditentukan, port idle acak akan digunakan. |
|
Custom NIC |
config.WithIface |
Jika sebuah mesin memiliki beberapa NIC, Anda dapat menentukan NIC yang alamat IP-nya akan digunakan. |
|
Custom label |
config.WithLabel |
Anda dapat menambahkan label ke client, lalu mengarahkan job ke client dengan label tertentu. Fitur ini sering digunakan untuk rilis canary dan pengujian. |
Contoh:
func main() {
// Ini hanya contoh. Anda harus memperoleh konfigurasi aktual dari konsol.
cfg := &schedulerx.Config{
Endpoint: "acm.aliyun.com",
Namespace: "fa6ed99e-xxxxxx-a2bf1659d039",
GroupId: "xueren_test_sub",
AppKey: "myV5K5Xaf1kxxxxxxxx",
}
client, err := schedulerx.GetClient(cfg, schedulerx.WithWorkerConfig(config.NewWorkerConfig(
config.WithGrpcPort(8001),
config.WithIface("eth0")))),
config.WithLabel("test")
if err != nil {
panic(err)
}
// Nama TestMapReduceJob yang didaftarkan di sini harus sesuai dengan nama yang dikonfigurasi di konsol.
task := &TestMapReduceJob{
mapjob.NewMapReduceJobProcessor(), // FIXME how define user behavior
}
client.RegisterTask("TestMapReduceJob", task)
select {}
}
Verifikasi hasil
-
Setelah Anda menghubungkan client, deploy aplikasi ke Alibaba Cloud.
-
Masuk ke konsol SchedulerX.
-
Di bilah navigasi atas, pilih wilayah.
-
Di panel navigasi sebelah kiri, klik Application Management.
-
Pada halaman Total number of instances, lihat nilai Total number of instances.
-
Jika jumlah total instans adalah 0, koneksi gagal. Periksa konfigurasi aplikasi Anda.
-
Jika jumlah total instans lebih dari 0, koneksi berhasil. Nilai ini menunjukkan jumlah instans yang terhubung.
-
Langkah selanjutnya
Setelah aplikasi terhubung ke SchedulerX, Anda dapat membuat job di konsol SchedulerX. Untuk informasi selengkapnya, lihat bagian "Create a job" pada topik Job management.