# est-spi-scheduler **Repository Path**: est-spi/scheduler ## Basic Information - **Project Name**: est-spi-scheduler - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EST SPI Scheduler [English Version](README.en.md) ## EST SPI 调度模块 est-spi-scheduler 是 EST SPI 框架的调度模块,提供任务调度和定时执行功能。 ### 核心功能 #### Job - 任务接口 定义任务的接口,包含execute方法。 #### JobExecutionContext - 任务执行上下文 提供任务执行的上下文信息。 #### JobExecutionException - 任务执行异常 任务执行时的异常类。 #### Trigger - 触发器接口 定义触发器的接口,包含获取下一次触发时间的方法。 #### SimpleTrigger - 简单触发器实现 基于简单时间间隔的触发器实现。 #### CronTrigger - Cron触发器实现 基于Cron表达式的触发器实现(简化版)。 #### Scheduler - 调度器接口 定义调度器的接口,包含任务调度、取消、暂停、恢复等方法。 #### SchedulerException - 调度器异常 调度器操作的异常类。 #### SimpleScheduler - 简单调度器实现 基于ScheduledExecutorService的简单调度器实现。 ### 快速开始 #### 创建调度器 ```java import ltd.idcu.est.spi.scheduler.SimpleScheduler; import ltd.idcu.est.spi.scheduler.Scheduler; import ltd.idcu.est.spi.scheduler.SchedulerException; public class Example { public static void main(String[] args) throws SchedulerException { Scheduler scheduler = new SimpleScheduler(); scheduler.start(); // 使用 scheduler... scheduler.shutdown(); } } ``` #### 创建任务 ```java import ltd.idcu.est.spi.scheduler.Job; import ltd.idcu.est.spi.scheduler.JobExecutionContext; import ltd.idcu.est.spi.scheduler.JobExecutionException; public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Job executed at: " + context.getFireTime()); System.out.println("Job name: " + context.getJobName()); } } ``` #### 使用简单触发器调度任务 ```java import ltd.idcu.est.spi.scheduler.Scheduler; import ltd.idcu.est.spi.scheduler.SimpleTrigger; import ltd.idcu.est.spi.scheduler.Trigger; public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; Job myJob = new MyJob(); long currentTime = System.currentTimeMillis(); Trigger trigger = new SimpleTrigger( "my-trigger", "my-group", currentTime, 5000, 10 ); scheduler.scheduleJob("my-job", "my-group", myJob, trigger); } } ``` #### 使用Cron触发器调度任务 ```java import ltd.idcu.est.spi.scheduler.Scheduler; import ltd.idcu.est.spi.scheduler.CronTrigger; import ltd.idcu.est.spi.scheduler.Trigger; public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; Job myJob = new MyJob(); Trigger trigger = new CronTrigger( "cron-trigger", "cron-group", "0 * * * * ?" ); scheduler.scheduleJob("cron-job", "cron-group", myJob, trigger); } } ``` #### 手动触发任务 ```java import ltd.idcu.est.spi.scheduler.Scheduler; public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; scheduler.triggerJob("my-job", "my-group"); } } ``` #### 取消调度任务 ```java import ltd.idcu.est.spi.scheduler.Scheduler; public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; scheduler.unscheduleJob("my-trigger", "my-group"); } } ``` #### 删除任务 ```java import ltd.idcu.est.spi.scheduler.Scheduler; public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; scheduler.deleteJob("my-job", "my-group"); } } ``` #### 使用任务数据 ```java import ltd.idcu.est.spi.scheduler.Job; import ltd.idcu.est.spi.scheduler.JobExecutionContext; import ltd.idcu.est.spi.scheduler.JobExecutionException; import java.util.Map; public class DataJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { Map data = context.getJobData(); String message = (String) data.get("message"); System.out.println("Received message: " + message); } } public class Example { public static void main(String[] args) throws Exception { Scheduler scheduler = ...; Job dataJob = new DataJob(); Map jobData = new HashMap<>(); jobData.put("message", "Hello, Scheduler!"); Trigger trigger = new SimpleTrigger( "data-trigger", "data-group", System.currentTimeMillis() ); scheduler.scheduleJob("data-job", "data-group", dataJob, trigger, jobData); } } ``` ### Maven 依赖 ```xml ltd.idcu.est.spi est-spi-scheduler 1.0.0 ``` ### 许可证 MIT License