Solon

dromara::job-solon-plugin

</> markdown

此插件,由社区成员(傲世孤尘)贡献,详情见:代码仓库。版本已纳入 solon-parent 管理

<dependency>
    <groupId>org.dromara.solon-plugins</groupId>
    <artifactId>job-solon-plugin</artifactId>
</dependency>

1、描述

该插件提供了基于quartz的简单定时任务实现,特性如下:

  • 提供了基于注解形式的Job声明,满足简单快速的使用场景
  • 提供了自定义Job来源的支持,使得可以较为方便的从数据库加载定时任务
  • 支持运行时动态新增、删除、启动、停止及手动触发Job执行

2、使用方式

更多使用细节,可参照代码仓库的 src/test 包下的示例代码

  • 使用注解@JobHandler声明Job
@Component
@JobHandler(name = "JobDemo1", cron = "0/5 * * * * ?", param = "我是默认参数")
public class JobDemo1 implements IJobHandler {
    private static final Logger log = LoggerFactory.getLogger(JobDemo1.class);

    @Override
    public void execute(String param) throws Exception {
        log.info("JobDemo1 参数:{}", param);
    }

}
  • 自定义Job来源
@Component
public class JobService implements IJobSource {
    @Override
    public List<JobInfo> sourceList() {
        List<JobInfo> list = new ArrayList<>();
        // 正常场景下,此处一般用于从数据库读取Job配置,然后通过`Solon.context().getBean(xxx)`关联对应的Job实例
        list.add(new JobInfo()
                .setId("1") // 唯一标识,此处一般传数据库主键ID,也可与name相同
                .setName("Job示例") // 唯一标识,此处一般指定Bean的名称
                .setDesc("该job的描述1") // job描述
                .setCron("0/5 * * * * ?") // cron
                .setParam("我是默认参数") // 默认参数,可以不指定
                .setEnable(true) // 默认是否启用,默认不启用,运行时可以通过JobExecutor.start来启动
                .setJobHandler(new Job1())
        );
        return list;
    }
}