# 任务分发插件 **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. 添加必要数据库表 ![数据苦](https://images.gitee.com/uploads/images/2019/0814/132142_af27657c_1780433.png "WechatIMG5.png") 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/)