# elegent-job 优雅分布式任务调度框架 **Repository Path**: myelegent/elegent-job ## Basic Information - **Project Name**: elegent-job 优雅分布式任务调度框架 - **Description**: Elegent job(优雅分布式任务框架)是一款发布订阅模式的分布式任务调度框架。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 0 - **Created**: 2023-10-18 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](doc/images/logob.png) # Elegent job【优雅分布式任务框架】 ## 框架介绍 ​ Elegent job(优雅分布式任务框架)是一款模发布订阅模式的分布式任务调度框架。 这个组件具有的特点: 1. 服务端以配置文件的方式配置任务规则,无需要任何管理界面,也不需要单独部署。 2. 异步方式处理分发任务,无阻塞、无丢弃。 3. 支持负载均衡。 4. 客户端只需要引入依赖和使用注解即可。 下面是Elegent job框架的系统架构图: ![](doc/images/system.png) ## 使用说明 ### 服务端 (1)在项目中引入elegent-job-serve的依赖。 ```xml cn.elegent.job elegent-job-server 1.1.0 ``` 因为elegent-job-serve需要用到elegent-AC 来发送消息,所以我们还需要加入 elegent-AC的实现依赖。如果你用的的是mqtt协议的消息中间件,则需要引入 ```xml cn.elegent.ac elegent-AC-mqtt 1.1.0 ``` 如果是amqp协议的消息中间件,则需要引入依赖 ```xml cn.elegent.ac elegent-AC-amqp 1.1.0 ``` (2)在项目配置文件添加配置,示例如下: ```yaml elegent: job: job-list: - job-name: test1 job-group: test enable: true job-key: testjob1 cron-expression: "* * * * * ?" - job-name: test2 job-group: test enable: false job-key: testjob2 cron-expression: "1/3 * * * * ?" ac: host: 127.0.0.1 port: 1883 clientId: jobServer username: admin password: public keepAliveInterval: 30 connectionTimeout: 60 ``` elegent.job.job-list配置说明; | 配置 | 说明 | | --------------- | --------------- | | job-name | 任务名称(中文) | | job-group | 任务组名称 | | enable | 是否开启 true/false | | job-key | 任务key | | cron-expression | cron表达式 | elegent.ac 配置说明: | 配置 | 说明 | | ----------------- | ------------------- | | host | MQ的主机地址 | | port | MQ中间件的端口。 EMQ的是1883 | | username | 登录用户名 | | password | 登录密码 | | clientId | 客户端ID | | keepAliveInterval | 心跳检测(秒) | | connectionTimeout | 连接超时时间 | (3)启动消息中间件。 ### 客户端 (1)引入依赖 ```xml cn.elegent.job elegent-job-client 1.1.0 ``` 因为elegent-job-client需要用到elegent-AC 来接收消息,所以我们还需要加入 elegent-AC的实现依赖。如果你用的的是mqtt协议的消息中间件,则需要引入 ```xml cn.elegent.ac elegent-AC-mqtt 1.1.0 ``` 如果是amqp协议的消息中间件,则需要引入依赖 ```xml cn.elegent.ac elegent-AC-amqp 1.1.0 ``` (2)在项目配置文件添加配置,示例如下: ```yaml elegent: ac: host: 127.0.0.1 port: 1883 clientId: jobClient username: admin password: public keepAliveInterval: 30 connectionTimeout: 60 ``` elegent.ac 配置说明请参考上一小节 (3)编写任务处理类 ```java @Job("testjob1") @Slf4j public class Job1 implements ElegentJob { @Override public JobResponse execute(JobRequest jobRequest) { log.info("job1被执行"); return JobResponse.builder() .isSuccess(true) .info("job1完成") .build(); } } ``` 编写类实现ElegentJob接口,并在类上添加@Job注解,注解的值与服务端配置的job-key相同。 ## 参与贡献 1. 从 `master` 分支 `checkout` 一个新分支(**注**:*请务必保证 master 代码是最新的*) 2. 新分支命名格式:`docs/username_description`,例如:`docs/tom_新增分布式锁配置项` 3. 在新分支上编辑文档、代码,并提交代码 4. 最后 `PR` 合并到 `develop` 分支,等待作者合并即可