# 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

# Elegent job【优雅分布式任务框架】
## 框架介绍
Elegent job(优雅分布式任务框架)是一款模发布订阅模式的分布式任务调度框架。 这个组件具有的特点:
1. 服务端以配置文件的方式配置任务规则,无需要任何管理界面,也不需要单独部署。
2. 异步方式处理分发任务,无阻塞、无丢弃。
3. 支持负载均衡。
4. 客户端只需要引入依赖和使用注解即可。
下面是Elegent job框架的系统架构图:

## 使用说明
### 服务端
(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` 分支,等待作者合并即可