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 :
Un compte Alibaba Cloud avec le service EDAS activé
L'accès à la console EDASconsole EDAS
É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
Connectez-vous à la console EDASconsole EDAS.
Dans la région test, créez un groupe de tâches planifiées et notez l'ID du groupe.
-
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 SimpleTaskNom 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.
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.