Avec le développement d'Internet, de plus en plus d'entreprises commencent à adopter une architecture de microservices pour créer des systèmes distribués afin d'améliorer la fiabilité, l'évolutivité et la maintenabilité des applications. Dans l'architecture des microservices, un système de planification de tâches est un composant très important. Il peut être utilisé pour exécuter régulièrement certaines tâches asynchrones, appeler d'autres interfaces de microservices, etc.
Spring Cloud est un framework de microservices open source qui fournit des outils et des frameworks très puissants, tels que Spring Cloud Netflix, Spring Cloud Config, Spring Cloud Stream, Spring Cloud Security, etc. Parmi eux, Spring Cloud Netflix est un framework de microservices très populaire. Il fournit certains composants et extensions de base, tels que l'enregistrement et la découverte de services, l'équilibrage de charge client, la gestion de la configuration, les disjoncteurs, les passerelles API, etc.
Dans cet article, nous présenterons comment utiliser Spring Cloud pour développer un système de planification de tâches, qui comprend principalement le contenu suivant :
1. Analyse des exigences du système de planification de tâches
Sous l'architecture de microservices, un système de planification de tâches doit prendre en charge les fonctions suivantes :
2. Utilisez Spring Scheduler pour implémenter la planification des tâches
Spring Scheduler est un module du framework Spring Il fournit un cadre de planification de tâches léger qui peut facilement implémenter des fonctions de planification de tâches.
Ajouter une dépendance Spring Scheduler dans la logique de tâche pom.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.4.3</version> </dependency>
Ajoutez une classe de configuration de planification de tâches au projet Spring Boot pour configurer la stratégie de planification de tâches spécifique et les tâches exécutées.
@Component public class JobTask implements Runnable { @Override public void run() { System.out.println("running job..."); } }
Après avoir démarré l'application Spring Boot, vous pouvez afficher la sortie de la console et la tâche sera exécutée selon l'intervalle de temps et la périodicité spécifiés. Si vous souhaitez modifier la stratégie d'exécution des tâches, il vous suffit de modifier la classe de configuration.
Dans l'application du système de planification de tâches, utilisez des services tels que Eureka ou Consul de Spring Cloud pour S'inscrire Avec le composant de découverte, enregistrez le système de planification de tâches auprès du centre d'enregistrement des services.
@Configuration @EnableScheduling public class ScheduleConfig { @Autowired private JobTask jobTask; //在每分钟的3秒和6秒执行一次 @Scheduled(cron = "3-6 * * * * ?") public void scheduleJob1() { jobTask.run(); } //在间隔5秒后执行第一次,之后每隔10秒执行一次 @Scheduled(initialDelay = 5000, fixedRate = 10000) public void scheduleJob2() { jobTask.run(); } }
Utilisez des passerelles API telles que Spring Cloud Gateway ou Zuul pour exposer le système de planification de tâches à d'autres microservices.
spring: application: name: task-scheduler eureka: instance: hostname: localhost client: service-url: defaultZone: http://localhost:8761/eureka/
Dans d'autres microservices, utilisez des outils tels que Feign ou RestTemplate pour appeler l'API RESTful exposée par le système de planification de tâches pour exécuter des tâches asynchrones ou déclencher l'exécution de tâches.
spring: application: name: api-gateway server: port: 8080 eureka: instance: hostname: localhost client: service-url: defaultZone: http://localhost:8761/eureka/ gateway: routes: - id: task-scheduler uri: lb://task-scheduler predicates: - Path=/schedule/**
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!