# 任务分发插件
**Repository Path**: kaiyang_taichi/allot_plugns
## Basic Information
- **Project Name**: 任务分发插件
- **Description**: 你是否有分布式环境下任务要并行执行的需求?
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-08-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 任务分发插件
#### 介绍
你是否有分布式环境下任务要并行执行的需求?
你是否有在单服务器上可以分页执行,但分布式分页问题无法实现的问题?
你是否有引入各种batch框架太重,有大才小用的问题?
这个插件本身为分布式环境下分页并行处理任务服务.
#### 软件架构
软件架构说明
就是为了轻量化,就是为了能把多台服务器看成一台进行分页处理
其中demo-web为测试工程,可随意调戏!
#### 安装教程
1. 添加必要数据库表

2. 没有然后了,这就完了
#### 使用说明
1. 添加pom依赖
cn.creditease.std
allot-plugin
1.0-SNAPSHOT
spring-amqp
org.springframework.amqp
2. 配置处理类(请在demo中找这个类)
```
public class TestAllotProcessor extends AbstactJobConsumeWorker {
........
```
3. 配置规则,目前第一版,只支持mq的广播模式作为任务通知器(仅仅因为项目有,所以就用它了)
```
@Configuration
public class AlloterConfig {
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
ConnectionFactory connectionFactory;
@Autowired
DataSource dataSource;
@Value("${server.port}")
private int port;
@Bean
public JobAlloterFactory getJobAlloterManager() {
JobConsumerConfig jobConsumerConfig = new JobConsumerConfig().
setMaxJobCount(40).setMaxConsumerCountByJobGroupPerServer(3);
Map jobConsumerConfigMap = new HashMap();
jobConsumerConfigMap.put("test", jobConsumerConfig);
return new JobAlloterFactoryBuilder().setConnectionFactory(connectionFactory)
.setConsumerId(IpUtils.getLocalIp() + ":" + port).setDataSource(dataSource).setJobConsumerConfigMap(jobConsumerConfigMap)
.setRabbitTemplate(rabbitTemplate).buildMqFactory();
}
}
```
4. 实际业务发任务实例
```
@RestController
@RequestMapping("/allot")
public class AllotTestController {
@Autowired
JobAlloterFactory jobAlloterManager;
/**
* 分发测试
*/
@RequestMapping("test")
public String test() {
//模拟计算总条数有1000条数据
int sum = 1000;
String jobName = "test";
int maxDuration = 1;
JobAlloter alloter = jobAlloterManager.getAlloter(1000, jobName, maxDuration);
alloter.start();
return "ok";
}
}
```
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 码云特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)