Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:Implement job scheduling

Dernière mise à jour :Aug 10, 2026

SchedulerX vous permet d'exécuter des tâches planifiées dans les applications Spring Cloud déployées sur Enterprise Distributed Application Service (EDAS). Ce guide vous explique comment créer une tâche Simple Job Single-instance Edition, la tester en local et la déployer sur EDAS.

SchedulerX est la plateforme distribuée de planification des tâches d'Alibaba Cloud. Elle offre :

  • Précision infra-minute : Planifiez des tâches avec une granularité à la seconde grâce aux expressions cron.

  • Haute disponibilité : Basculement intégré et exécution fiable.

  • Modèles d'exécution distribués : Exécutez des charges de travail parallèles avec des modèles tels que MapReduce.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Étape 1 : Créer le projet Maven

Créez un projet Maven nommé scx-example.

Ajoutez les dépendances suivantes à votre fichier pom.xml. Cette configuration utilise Spring Boot 2.1.4.RELEASE avec 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 a atteint sa fin de vie. Si vous utilisez toujours Spring Boot 1.5.x avec Spring Cloud Edgware, définissez la version de Spring Cloud Alibaba sur 1.5.1.RELEASE.

Étape 2 : Créer le point d'entrée de l'application

Créez une classe de démarrage nommée 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);
    }
}

Étape 3 : Créer un service de test

Créez une classe de service gérée par Spring nommée TestService. Cette classe valide que l'injection IoC (Inversion of Control) de Spring fonctionne correctement dans la classe de tâche.

import org.springframework.stereotype.Service;

@Service
public class TestService {

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

Étape 4 : Implémenter le processeur de tâches

Créez une classe de tâche nommée SimpleTask qui implémente ScxSimpleJobProcessor. Cette classe définit la logique exécutée à chaque déclenchement de la tâche.

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);
    }
}

La méthode process renvoie ProcessResult(true) pour indiquer une exécution réussie. Spring injecte automatiquement TestService via l'annotation @Autowired.

Étape 5 : Créer une tâche planifiée dans la console EDAS

  1. Connectez-vous à la console EDASconsole EDAS.

  2. Dans la région test, créez un groupe de tâches planifiées et notez l'ID du groupe.

  3. Dans le groupe de tâches, créez une tâche avec les paramètres suivants :

    Paramètre Valeur Description
    Application ID L'ID du groupe de l'étape précédente Lie la tâche à votre groupe de tâches
    Processor class name SimpleTask Nom complet de la classe qui implémente l'interface de tâche
    Task type Stand-alone operation Exécute la tâche sur une seule instance
    cron expression 0 * * * * ? Déclenche la tâche toutes les minutes
    Description (Laisser vide) Description facultative de la tâche
    Task parameters (Laisser vide) Paramètres d'exécution facultatifs

Étape 6 : Configurer l'application

Dans src/main/resources, créez le fichier application.properties avec les paramètres suivants :

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>

Remplacez les espaces réservés suivants par vos valeurs réelles :

Espace réservé Description Exemple
<your-namespace-id> ID de namespace depuis la console EDAS d1ce9d38-ab9b-444e-ab2a-4*****
<your-group-id> ID du groupe de tâches planifiées Obtenu à l'étape 5
<your-app-key> Clé d'application pour l'authentification 5pHlwaWpluJGd39******
La région test utilise cn-test comme regionName. Lors des tests en local, le trafic passe par Internet sans restriction d'autorisation.

Étape 7 : Exécuter et vérifier en local

Exécutez la méthode main dans ScxApplication pour démarrer le service.

Vérifiez la sortie de la console dans votre IDE. Lorsque la tâche s'exécute correctement, les messages suivants s'affichent toutes les minutes :

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

Déployer sur EDAS

Après la vérification locale, déployez l'application sur EDAS sans modifier le code ni la configuration. SchedulerX prend en charge la migration transparente d'un environnement de développement vers EDAS.

Choisissez une cible de déploiement en fonction de votre infrastructure :

Cible de déploiement Guide
Cluster Kubernetes Créer et déployer des applications dans des clusters Kubernetes
Cluster Elastic Compute Service (ECS) Créer et déployer des applications dans des clusters ECS

Une fois le déploiement effectué, gérez et surveillez vos tâches planifiées depuis la console EDAS.

Déployer dans des régions de production

Les étapes ci-dessus utilisent la région test pour le développement et la vérification. Pour déployer dans une région de production telle que Chine (Hangzhou), ajoutez vos identifiants AccessKey au fichier application.properties :

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

Obtenez votre ID AccessKey et votre secret AccessKey depuis la page Security Management.

Important

Stockez les identifiants AccessKey en toute sécurité. Évitez de les valider dans le contrôle de version. Utilisez des variables d'environnement ou un gestionnaire de secrets dans les environnements de production.

Étapes suivantes

Après avoir déployé l'application sur EDAS, explorez les fonctionnalités supplémentaires de SchedulerX :

  • Configurez d'autres types de tâches au-delà de Simple Job Single-instance Edition.

  • Mettez en place des modèles d'exécution distribués tels que MapReduce pour exécuter des charges de travail parallèles sur plusieurs instances.