All Products
Search
Document Center

:Manajemen Pelaksana

Last Updated:Nov 11, 2025

Setelah membuat aplikasi, Anda harus menghubungkan sebuah executor untuk menjalankan tugas.

Menghubungkan aplikasi standar ke executor

Pendaftaran Otomatis

Untuk menggunakan pendaftaran otomatis, aplikasi Anda harus bergantung pada SDK XXL-JOB. Setelah pengaturan koneksi dikonfigurasi, executor akan terdaftar secara otomatis saat aplikasi dimulai.

1. Melihat pengaturan koneksi

  1. Masuk ke Konsol MSE XXL-JOB.

  2. Di pojok kiri atas halaman, pilih Region.

  3. Klik ID instans target. Di panel navigasi sebelah kiri, pilih Application Management.

  4. Temukan aplikasi target. Di kolom Number of Executors, klik tombol Connect.

  5. Pilih Automatic Registration sebagai jenis koneksi dan lengkapi konfigurasinya.

2. Mengimpor SDK untuk menghubungkan executor

Java SDK

  1. Tambahkan dependensi Maven `xxl-job-core` ke file pom.xml Anda.

  2. Inisialisasi executor.

    @Configuration
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Value("${xxl.job.executor.appname}")
        private String appname;
    
        @Value("${xxl.job.executor.address}")
        private String address;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.executor.logpath}")
        private String logPath;
    
        @Value("${xxl.job.executor.logretentiondays}")
        private int logRetentionDays;
    
        @Bean
        public XxlJobSpringExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setAddress(address);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    
            return xxlJobSpringExecutor;
        }
    
    }

Go SDK

  1. Jalankan perintah berikut untuk menarik SDK Go XXL-JOB menggunakan tag terbaru.

    go get github.com/xxl-job/xxl-job-executor-go@{latest_tag}
  2. Tulis kode aplikasi Anda.

    package main
    
    import (
        "context"
        "fmt"
        xxl "github.com/xxl-job/xxl-job-executor-go"
        "github.com/xxl-job/xxl-job-executor-go/example/task"
        "log"
    )
    
    func main() {
        exec := xxl.NewExecutor(
            xxl.ServerAddr("xxxxxx"),       // Alamat permintaan. Dapatkan dari pengaturan koneksi di bagian Application Management pada konsol.
            xxl.AccessToken("xxxxxxx"),     // Token akses. Dapatkan dari pengaturan koneksi di bagian Application Management pada konsol.
            xxl.ExecutorPort("9999"),       // Port default adalah 9999. Parameter ini opsional.
            xxl.RegistryKey("golang-jobs"), // Nama executor.
            xxl.SetLogger(&logger{}),       // Logger kustom.
        )
        exec.Init()
        exec.Use(customMiddleware)
        // Tetapkan penanganan untuk melihat log.
        exec.LogHandler(customLogHandle)
        // Daftarkan penanganan tugas.
        exec.RegTask("task.test", task.Test)
        exec.RegTask("task.test2", task.Test2)
        exec.RegTask("task.panic", task.Panic)
        log.Fatal(exec.Run())
    }
    
    // Penanganan log kustom.
    func customLogHandle(req *xxl.LogReq) *xxl.LogRes {
        return &xxl.LogRes{Code: xxl.SuccessCode, Msg: "", Content: xxl.LogResContent{
            FromLineNum: req.FromLineNum,
            ToLineNum:   2,
            LogContent:  "This is a custom log handler.",
            IsEnd:       true,
        }}
    }
    
    // Implementasi antarmuka xxl.Logger.
    type logger struct{}
    
    func (l *logger) Info(format string, a ...interface{}) {
        fmt.Println(fmt.Sprintf("Custom log - "+format, a...))
    }
    
    func (l *logger) Error(format string, a ...interface{}) {
        log.Println(fmt.Sprintf("Custom log - "+format, a...))
    }
    
    // Middleware kustom.
    func customMiddleware(tf xxl.TaskFunc) xxl.TaskFunc {
        return func(cxt context.Context, param *xxl.RunReq) string {
            log.Println("I am a middleware start")
            res := tf(cxt, param)
            log.Println("I am a middleware end")
            return res
        }
    }
    

Python SDK

  1. Instal dependensi.

    pip install pyxxl
    
    # Untuk menulis log ke Redis
    pip install "pyxxl[redis]"
    
    # Untuk memuat konfigurasi dari file .env
    pip install "pyxxl[dotenv]"
    
    # Untuk menginstal semua fitur
    pip install "pyxxl[all]"
  2. Tulis kode aplikasi Anda.

    import asyncio
    import time
    
    from pyxxl import ExecutorConfig, PyxxlRunner
    from pyxxl.ctx import g
    
    config = ExecutorConfig(
        xxl_admin_baseurl="http://xxljob-1b3fd8196eb.schedulerx.mse.aliyuncs.com/api/",
        executor_app_name="xueren-test",
        access_token="default_token",
    #    executor_listen_host="0.0.0.0",  # Jika xxl-admin dapat langsung terhubung ke alamat IP executor, Anda tidak perlu menentukan executor_listen_host.
    )
    
    app = PyxxlRunner(config)
    
    
    @app.register(name="demoJobHandler")
    async def test_task():
        # Anda dapat mendapatkan parameter tugas dengan "g"
        g.logger.info("get executor params: %s" % g.xxl_run_data.executorParams)
        for i in range(10):
            g.logger.warning("test logger %s" % i)
        await asyncio.sleep(5)
        return "Success..."
    
    @app.register(name="sync_func")
    def test_task4():
        # Untuk melihat log eksekusi di xxl-admin, Anda harus menggunakan g.logger untuk mencetak log. Secara default, hanya log level INFO ke atas yang dicetak.
        n = 1
        g.logger.info("Job %s get executor params: %s" % (g.xxl_run_data.jobId, g.xxl_run_data.executorParams))
        # Jika tugas sinkron berisi loop, Anda harus memeriksa g.cancel_event di setiap iterasi untuk mendukung operasi pembatalan.
        while n <= 10 and not g.cancel_event.is_set():
            # Jika Anda tidak perlu melihat log dari xxl-admin, Anda dapat menggunakan logger sendiri.
            g.logger.info(
                "log to {} logger test_task4.{},params:{}".format(
                    g.xxl_run_data.jobId,
                    n,
                    g.xxl_run_data.executorParams,
                )
            )
            time.sleep(2)
            n += 1
        return "Success 3"
    
    
    if __name__ == "__main__":
        app.run_executor()

Entri Manual

Anda dapat mengelola alamat executor secara manual. Alamat harus dalam format http://192.168.0.1:9999/.

  1. Masuk ke Konsol MSE XXL-JOB.

  2. Di pojok kiri atas halaman, pilih Region.

  3. Klik ID instans target. Di panel navigasi sebelah kiri, pilih Application Management.

  4. Temukan aplikasi target. Di kolom Number of Executors, klik tombol Connect.

  5. Atur Connection Type menjadi Manual Entry, lalu masukkan Executor Address.

Menghubungkan aplikasi HTTP ke executor

Anda tidak memerlukan SDK untuk menghubungkan aplikasi HTTP. Sebagai gantinya, Anda dapat mengonfigurasi nama domain atau layanan Kubernetes untuk secara otomatis menemukan node backend dan menggunakan protokol HTTP untuk penjadwalan.

Menghubungkan ke layanan Kubernetes

Jika aplikasi HTTP Anda diterapkan di Alibaba Cloud Container Service for Kubernetes (ACK), Anda dapat menghubungkannya menggunakan layanan Kubernetes.

  1. (Opsional) Terapkan aplikasi di ACK. Jenis kluster berikut didukung:

    • ACK managed cluster dengan plugin jaringan Terway

    • ACK Serverless cluster

    • ACS cluster

  2. (Opsional) Buat layanan untuk aplikasi di ACK. Jenis layanan berikut didukung:

    • ClusterIP

    • LoadBalancer

  3. Masuk ke Konsol MSE XXL-JOB.

  4. Di pojok kiri atas halaman, pilih Region.

  5. Klik ID instans target. Di panel navigasi sebelah kiri, pilih Application Management.

  6. Temukan aplikasi target. Di kolom Number of Executors, klik tombol Connect.

  7. Pada halaman Connect Executor, pilih Connect K8s Service sebagai Connection Type, lengkapi pengaturan parameter, lalu klik OK untuk menyelesaikan koneksi.

Setelah koneksi dibuat, jumlah executor diperbarui. Anda dapat mengklik angka tersebut untuk melihat daftar pod backend.

Memasukkan nama domain secara manual

Jika aplikasi Anda tidak diterapkan di ACK, misalnya pada Instance ECS, Anda dapat menggunakan nama domain internal untuk menjadwalkan tugas HTTP.

  1. (Opsional) Buat gerbang untuk aplikasi HTTP. Nama domain internal akan dibuat secara otomatis. Misalnya, Anda dapat menggunakan Network Load Balancer (NLB).

  2. Di pojok kiri atas halaman, pilih Region.

  3. Klik ID instans target. Di panel navigasi sebelah kiri, pilih Application Management.

  4. Temukan aplikasi target. Di kolom Number of Executors, klik tombol Connect.

  5. Pada halaman Connect Executor, atur Connection Type menjadi Enter Domain Name, lalu konfigurasikan titik akhir internal dalam wilayah yang sama.