All Products
Search
Document Center

SchedulerX:Integrasi Go SDK

Last Updated:Aug 25, 2026

Topik ini menjelaskan cara menghubungkan aplikasi Go ke SchedulerX menggunakan Go SDK-nya.

Konfigurasi konsol

  1. 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==
  2. Untuk membuat job Go, lihat job management.

    Pada langkah konfigurasi dasar, masukkan hellogo untuk Job Name, pilih Application ID, atur Job Type ke golang, atur Task Name ke HelloWorld, atur execution mode ke standalone execution, dan atur Priority ke Medium.

Integrasi client

  1. 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}
  2. 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
    }
                
  3. 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

  1. Setelah Anda menghubungkan client, deploy aplikasi ke Alibaba Cloud.

  2. Masuk ke konsol SchedulerX.

  3. Di bilah navigasi atas, pilih wilayah.

  4. Di panel navigasi sebelah kiri, klik Application Management.

  5. 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.

Topik terkait

Go jobs