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

Posted 灰太狼_cxh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#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.289  INFO 15872 --- [-sharding-job-2] com.cxh.elasticjob.job.MyShardingJob     : 分片2:执行任务
2021-12-29 14:42:55.289 INFO 15872 --- [-sharding-job-1] com.cxh.elasticjob.job.MyShardingJob : 分片1:执行任务
2021-12-29 14:42:55.289 INFO 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.086  INFO 7856 --- [-sharding-job-1] com.cxh.elasticjob.job.MyShardingJob     : 分片1:执行任务
2021-12-29 14:44:00.086 INFO 7856 --- [-sharding-job-2] com.cxh.elasticjob.job.MyShardingJob : 分片3:执行任务
2021-12-29 14:44:05.065 INFO 7856 --- [-sharding-job-3] com.cxh.elasticjob.job.MyShardingJob : 分片1:执行任务
2021-12-29 14:44:05.067 INFO 7856 --- [-sharding-job-4] com.cxh.elasticjob.job.MyShardingJob : 分片3:执行任务

项目1负责1个分片任务

2021-12-29 14:45:45.033  INFO 15872 --- [ng-job_Worker-1] com.cxh.elasticjob.job.MyShardingJob     : 分片2:执行任务
2021-12-29 14:45:50.039 INFO 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实现分片配置定时任务的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# redis | 十四springboot整合redis

#yyds干货盘点# springboot整合JPA访问Mysql

SpringBoot+SpringSecurity系列八:整合JWT #yyds干货盘点#

#yyds干货盘点#jackson学习之九:springboot整合(配置文件)

SpringBoot | 3.2 整合MyBatis #yyds干货盘点#

#yyds干货盘点# springboot整合Oauth2,GateWay实现网关登录授权验证