All Products
Search
Document Center

SchedulerX:Menghubungkan aplikasi Golang ke SchedulerX menggunakan SDK untuk Golang

Last Updated:Dec 06, 2025

Topik ini menjelaskan cara menghubungkan aplikasi Golang ke SchedulerX menggunakan SDK untuk Golang.

Prosedur

  1. Buat aplikasi umum dan kueri konfigurasinya. Untuk informasi selengkapnya, lihat bagian Buat aplikasi pada topik manajemen aplikasi dan bagian Langkah 2 pada topik Menghubungkan ke SchedulerX melalui Internet dari lingkungan on-premises.

    image.png

    image.png

  2. Buat job Golang. Untuk informasi selengkapnya, lihat Manajemen job.

    image.png

Akses client

  1. Jalankan perintah berikut untuk mendapatkan SchedulerX SDK untuk Go menggunakan tag terbaru:

    go get github.com/alibaba/schedulerx-worker-go@{Latest tag}

    Atau, jalankan perintah berikut untuk mendapatkan paket branch SDK untuk Golang beserta dependensinya:

    go get github.com/alibaba/schedulerx-worker-go@{Branch name}
  2. Tulis kode layanan untuk mengimplementasikan antarmuka Processor.

    type Processor interface {
        Process(ctx *processor.JobContext) (*ProcessResult, error)
    }

    Kode 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 job Golang ke client. Nama job harus sama dengan yang Anda tentukan di Konsol.

    package main
    
    import (
    	"github.com/alibaba/schedulerx-worker-go"
    )
    
    func main() {
    	// Ini hanya contoh, konfigurasi sebenarnya perlu diperoleh dari platform
    	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{}
    
    	// Tentukan nama untuk job Anda dan daftarkan ke client. Nama job harus sama dengan yang Anda tentukan di Konsol.
    	client.RegisterTask("HelloWorld", task)
    	select {}
    }
    

Parameter client

Parameter

Operasi

Deskripsi

Custom port

config.WithGrpcPort

Job non-standalone yang berjalan pada multiple worker perlu saling terhubung. Untuk menghubungkan job tersebut, Anda harus menentukan sebuah port. Jika Anda tidak menentukan port, sistem akan memilih port idle secara acak.

Custom NIC

config.WithIface

Jika sebuah worker memiliki multiple network interface controllers (NICs) dan Anda ingin menggunakan NIC tertentu, Anda dapat menentukan nama kustom untuk NIC tersebut guna mendapatkan alamat IP-nya.

Custom tag

config.WithLabel

Anda dapat menambahkan tag ke client dan mengonfigurasi penjadwalan job berdasarkan tag tertentu. Tag cocok digunakan dalam skenario rilis canary dan pengujian.

Kode contoh:

func main() {
    // Ini hanya contoh, konfigurasi sebenarnya perlu diperoleh dari platform
    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 konsisten dengan yang dikonfigurasi di platform
    task := &TestMapReduceJob{
        mapjob.NewMapReduceJobProcessor(), // FIXME how define user behavior
    }
    client.RegisterTask("TestMapReduceJob", task)
    select {}
}

Verifikasi hasil

  1. Publikasikan aplikasi ke Alibaba Cloud.

  2. Masuk ke Konsol SchedulerX.

  3. Pada bilah navigasi atas, pilih Wilayah.

  4. Pada panel navigasi kiri, klik Application Management.

  5. Pada halaman Application Management, periksa jumlah total pelaksana.

    • Jika jumlah total pelaksana adalah 0, aplikasi gagal terhubung. Periksa dan perbaiki aplikasi.

    • Jika jumlah total pelaksana bukan 0, aplikasi berhasil terhubung.

Langkah selanjutnya

Setelah aplikasi terhubung ke SchedulerX, Anda dapat membuat job di Konsol SchedulerX. Untuk informasi selengkapnya, lihat bagian "Buat job" pada topik Manajemen job.

Referensi

Job Golang