#yyds干货盘点# springboot整合Elastic Job实现分片配置定时任务

天下之事常成于困约,而败于奢靡。这篇文章主要讲述#yyds干货盘点# springboot整合Elastic Job实现分片配置定时任务相关的知识,希望能为你提供帮助。
springboot整合Elastic Job实现分片配置定时任务
1.代码实现:
在??#yyds干货盘点# springboot整合Elastic Job实现定时任务??基础代码上进行修改
创建一个分片执行的定时任务

@Slf4j
@Service
public class MyShardingJob implements SimpleJob

@Override
public void execute(ShardingContext context)
switch (context.getShardingItem())
case 0:
log.info("分片1:执行任务");
break;
case 1:
log.info("分片2:执行任务");
break;
case 2:
log.info("分片3:执行任务");
break;






yml配置
elasticjob:
reg-center:
server-lists: localhost:2181
namespace: cxh
jobs:
#单个
#my-simple-job:
#elastic-job-class: com.cxh.elasticjob.job.MySimpleJob
#cron: 0/5 * * * * ?
#sharding-total-count: 1
#分片
my-sharding-job:
elastic-job-class: com.cxh.elasticjob.job.MyShardingJob
cron: 0/5 * * * * ?
sharding-total-count: 3
server:
port: 8001


2.实现效果:
运行项目1,端口为8001,此时项目1负责3个分片任务
2021-12-29 14:42:55.289INFO 15872 --- [-sharding-job-2] com.cxh.elasticjob.job.MyShardingJob: 分片2:执行任务
2021-12-29 14:42:55.289INFO 15872 --- [-sharding-job-1] com.cxh.elasticjob.job.MyShardingJob: 分片1:执行任务
2021-12-29 14:42:55.289INFO 15872 --- [-sharding-job-3] com.cxh.elasticjob.job.MyShardingJob: 分片3:执行任务


运行项目2,端口改为8002
java -jar elastic-job-0.0.1-SNAPSHOT.jar --server.port=8002


此时项目2负责2个分片任务 
2021-12-29 14:44:00.086INFO 7856 --- [-sharding-job-1] com.cxh.elasticjob.job.MyShardingJob: 分片1:执行任务
2021-12-29 14:44:00.086INFO 7856 --- [-sharding-job-2] com.cxh.elasticjob.job.MyShardingJob: 分片3:执行任务
2021-12-29 14:44:05.065INFO 7856 --- [-sharding-job-3] com.cxh.elasticjob.job.MyShardingJob: 分片1:执行任务
2021-12-29 14:44:05.067INFO 7856 --- [-sharding-job-4] com.cxh.elasticjob.job.MyShardingJob: 分片3:执行任务


项目1负责1个分片任务
2021-12-29 14:45:45.033INFO 15872 --- [ng-job_Worker-1] com.cxh.elasticjob.job.MyShardingJob: 分片2:执行任务
2021-12-29 14:45:50.039INFO 15872 --- [ng-job_Worker-1] com.cxh.elasticjob.job.MyShardingJob: 分片2:执行任务


运行项目3,端口改为8003
java -jar elastic-job-0.0.1-SNAPSHOT.jar --server.port=8003


此时3个项目各自负责一个分片任务
运行项目4, 端口改为8004
因为值设置了3个分片任务,所以项目4不负责分片任务。
总结:随着实例数量的增加,可以看到分片的分配发生了变化。这也就意味着,当一个任务开始执行的时候,两个任务执行实例都被利用了起来,这样我们的任务执行和资源利用的效率就可以得到优化。


【#yyds干货盘点# springboot整合Elastic Job实现分片配置定时任务】


    推荐阅读