Todos los productos
Search
Centro de documentos

SchedulerX:Integración del SDK de Go

Última actualización: Sep 19, 2026

Este tema describe cómo conectar una aplicación Go a SchedulerX mediante su SDK de Go.

Configuración de la consola

  1. Para crear una aplicación estándar, consulte Create an application. A continuación, consulte Step 2 para obtener la información de configuración.

    En la lista Application Management, busque la aplicación de destino, por ejemplo, xxl-job. En la columna Operation, haga clic en connection parameters.

    Seleccione Go como lenguaje. Los parámetros de conexión son los siguientes:

    Endpoint:   acm.aliyun.com,
    Namespace:  433d8b23-xxx-a-90d4d1b9a4af,
    GroupId:    xxl-job-test,
    AppKey:     b0iXMY3Bxxx+Gew==
  2. Para crear un trabajo de Go, consulte job management.

    En el paso de configuración básica, introduzca hellogo en Job Name, seleccione el Application ID, establezca Job Type en golang, configure Task Name como HelloWorld, defina execution mode en standalone execution y asigne Medium a Priority.

Integración del cliente

  1. Ejecute el siguiente comando para descargar la versión etiquetada más reciente del SDK de SchedulerX para Go.

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

    De forma alternativa, ejecute el siguiente comando para descargar una rama específica.

    go get github.com/alibaba/schedulerx-worker-go@{branch_name}
  2. Escriba el código de negocio para implementar la interfaz Processor.

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

    Ejemplo:

    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. Registre el cliente y el trabajo. El nombre de la tarea debe coincidir con el configurado en la consola.

    package main
    import (
    	"github.com/alibaba/schedulerx-worker-go"
    )
    func main() {
    	// This is an example. You must obtain the actual configuration from the console.
    	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{}
    	// Give your task a name and register it with the client. The name must match the one in the console.
    	client.RegisterTask("HelloWorld", task)
    	select {}
    }
    

Parámetros del cliente

Parámetro

API

Descripción

Puerto personalizado

config.WithGrpcPort

En los trabajos no independientes, los workers deben comunicarse entre sí. Este parámetro permite especificar un puerto de comunicación. Si no se indica ninguno, se utiliza un puerto inactivo aleatorio.

NIC personalizada

config.WithIface

Cuando una máquina cuenta con varias tarjetas de red, este parámetro sirve para indicar cuál se usará según su dirección IP.

Etiqueta personalizada

config.WithLabel

Permite agregar etiquetas a los clientes y dirigir los trabajos hacia aquellos que tengan etiquetas específicas. Se usa con frecuencia en despliegues canary y pruebas.

Ejemplo:

func main() {
    // This is an example. You must obtain the actual configuration from the console.
    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)
    }
    // The name TestMapReduceJob registered here must match the name configured in the console.
    task := &TestMapReduceJob{
        mapjob.NewMapReduceJobProcessor(), // FIXME how define user behavior
    }
    client.RegisterTask("TestMapReduceJob", task)
    select {}
}

Comprobar el resultado

  1. Una vez conectado el cliente, despliegue la aplicación en Alibaba Cloud.

  2. Inicie sesión en la consola de SchedulerX.

  3. Inicie sesión en la consola de EDAS.

  4. En el panel de navegación izquierdo, haga clic en Task Scheduling.

  5. En la barra de navegación superior, seleccione una región.

  6. En el panel de navegación izquierdo, haga clic en Application Management.

  7. En la página Application Management, consulte el valor de Total number of instances.

    • Si el número total de instancias es 0, la conexión terminó con errores. Revise la configuración de su aplicación.

    • Si el número total de instancias es mayor que 0, la conexión se completó correctamente. Este valor indica la cantidad de instancias conectadas.

Pasos siguientes

Después de conectar la aplicación a SchedulerX, puede crear trabajos en la consola de SchedulerX. Para obtener más información, consulte la sección «Crear un trabajo» del tema Job management.

Temas relacionados

Go jobs