Todos los productos
Search
Centro de documentos

Enterprise Distributed Application Service:Implement job scheduling

Última actualización: Sep 03, 2026

SchedulerX le permite ejecutar trabajos programados en aplicaciones Spring Cloud desplegadas en Enterprise Distributed Application Service (EDAS). Esta guía le muestra cómo crear un trabajo de tipo Simple Job Single-instance Edition, probarlo localmente y desplegarlo en EDAS.

SchedulerX es la plataforma distribuida de programación de trabajos de Alibaba Cloud. Ofrece las siguientes capacidades:

  • Precisión inferior al minuto: programe trabajos con granularidad de segundos mediante expresiones cron.

  • Alta disponibilidad: incluye failover integrado y ejecución confiable.

  • Modelos de ejecución distribuida: ejecute cargas de trabajo en paralelo con modelos como MapReduce.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Paso 1: Crear el proyecto Maven

Cree un proyecto Maven llamado scx-example.

Agregue las siguientes dependencias a su archivo pom.xml. Esta configuración utiliza Spring Boot 2.1.4.RELEASE con Spring Cloud Finchley.SR1.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- SchedulerX Spring Boot starter -->
    <dependency>
        <groupId>com.aliyun.schedulerx</groupId>
        <artifactId>schedulerx2-spring-boot-starter</artifactId>
        <version>${schedulerx2.version}</version>
        <!-- Exclude log4j if you use Logback -->
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Spring Boot 1.x ha llegado al final de su ciclo de vida. Si aún utiliza Spring Boot 1.5.x con Spring Cloud Edgware, establezca la versión de Spring Cloud Alibaba en 1.5.1.RELEASE.

Paso 2: Crear el punto de entrada de la aplicación

Cree una clase de inicio llamada ScxApplication:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ScxApplication {
    public static void main(String[] args) {
        SpringApplication.run(ScxApplication.class, args);
    }
}

Paso 3: Crear un servicio de prueba

Cree una clase de servicio administrada por Spring llamada TestService. Esta clase valida que la inyección de Inversión de Control (IoC) de Spring funcione correctamente en la clase del trabajo.

import org.springframework.stereotype.Service;

@Service
public class TestService {

    public void test() {
        System.out.println("---------IOC Success--------");
    }
}

Paso 4: Implementar el procesador del trabajo

Cree una clase de trabajo llamada SimpleTask que implemente ScxSimpleJobProcessor. Esta clase define la lógica que se ejecuta cada vez que se activa el trabajo.

import com.alibaba.edas.schedulerx.ProcessResult;
import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import org.springframework.beans.factory.annotation.Autowired;

public class SimpleTask implements ScxSimpleJobProcessor {

    @Autowired
    private TestService testService;

    @Override
    public ProcessResult process(JobContext context) {
        System.out.println("-----------Hello world---------------");
        testService.test();
        return new ProcessResult(true);
    }
}

El método process devuelve ProcessResult(true) para indicar que la ejecución se completó correctamente. Spring inyecta automáticamente TestService mediante la anotación @Autowired.

Paso 5: Crear un trabajo programado en la consola de EDAS

  1. Inicie sesión en la consola de EDASconsola de EDAS.

  2. En la región test, cree un grupo de trabajos programados y anote el ID del grupo.

  3. Dentro del grupo de trabajos, cree un trabajo con los siguientes parámetros:

    Parámetro

    Valor

    Descripción

    Application ID

    El ID de grupo del paso anterior

    Vincula el trabajo a su grupo de trabajos

    Processor class name

    SimpleTask

    Nombre completo de la clase que implementa la interfaz del trabajo

    Task type

    Stand-alone operation

    Ejecuta el trabajo en una sola instancia

    cron expression

    0 * * * * ?

    Activa el trabajo una vez por minuto

    Description

    (Dejar en blanco)

    Descripción opcional del trabajo

    Task parameters

    (Dejar en blanco)

    Parámetros de ejecución opcionales

Paso 6: Configurar la aplicación

En src/main/resources, cree el archivo application.properties con la siguiente configuración:

server.port=18033

# SchedulerX connection settings
# Replace the placeholder values with your actual namespace and group credentials.
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.namespace=<your-namespace-id>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>

Reemplace los siguientes marcadores de posición con sus valores reales:

Marcador de posición

Descripción

Ejemplo

<your-namespace-id>

ID de namespace obtenido en la consola de EDAS

d1ce9d38-ab9b-444e-ab2a-4*****

<your-group-id>

ID de su grupo de trabajos programados

Obtenido en el Paso 5

<your-app-key>

Clave de aplicación para autenticación

5pHlwaWpluJGd39******

La región test utiliza cn-test como regionName. Durante las pruebas locales, el tráfico viaja por Internet sin restricciones de permisos.

Paso 7: Ejecutar y verificar localmente

Ejecute el método main en ScxApplication para iniciar el servicio.

Revise la salida en la consola de su IDE. Cuando el trabajo se ejecuta correctamente, aparecen los siguientes mensajes una vez por minuto:

-----------Hello world---------------
---------IOC Success--------

Desplegar en EDAS

Tras la verificación local, despliegue la aplicación en EDAS sin modificar ningún código ni configuración. SchedulerX admite la migración transparente desde un entorno de desarrollo hacia EDAS.

Elija un destino de despliegue según su infraestructura:

Destino de despliegue

Guía

Clúster de Kubernetes

Create and deploy applications in Kubernetes clusters

Clúster de Elastic Compute Service (ECS)

Create and deploy applications in ECS clusters

Después del despliegue, gestione y supervise sus trabajos programados desde la consola de EDAS.

Desplegar en regiones de producción

Los pasos anteriores utilizan la región test para desarrollo y verificación. Para desplegar en una región de producción como China (Hangzhou), agregue sus credenciales AccessKey al archivo application.properties:

spring.cloud.alicloud.access-key=<your-access-key-id>
spring.cloud.alicloud.secret-key=<your-access-key-secret>

Obtenga su AccessKey ID y AccessKey secret en la página de Gestión de seguridad.

Importante

Almacene las credenciales AccessKey de forma segura. Evite confirmarlas en sistemas de control de versiones. Utilice variables de entorno o un gestor de secretos en entornos de producción.

Siguientes pasos

Una vez desplegada la aplicación en EDAS, explore otras capacidades de SchedulerX:

  • Configure otros tipos de trabajo además de Simple Job Single-instance Edition.

  • Establezca modelos de ejecución distribuida como MapReduce para ejecutar cargas de trabajo en paralelo en varias instancias.