当前位置: 首页 > news >正文

ElasticJob初探

依赖版本

JDK版本是:jdk17

springboot版本

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version></parent>

zookeeper

elasticjob 需要使用zookeeper为注册中心

下载地址:https://zookeeper.apache.org/releases.html
在这里插入图片描述

下载后解压,进入conf目录

复制zoo_sample.cfg 文件,修改名称为zoo.cfg,指定dataDir目录

在这里插入图片描述

进入bin目录,windows 点击zkServer.cmd启动,linux执行zkServer.sh文件启动

elastic作业模式

elasticjob:regCenter:## 注册中心serverLists: localhost:2181namespace: elasticjob-springbootjobs:simpleJob: elasticJobClass: xyz.toolhow.job.MyJobcron: 0 0/1 * * * ?timeZone: GMT+08:00shardingTotalCount: 3shardingItemParameters: 0=Beijing,1=Shanghai,2=GuangzhoudataflowJob:elasticJobClass: xyz.toolhow.job.SpringBootDataflowJobcron: 0 0/1 * * * ?timeZone: GMT+08:00shardingTotalCount: 3shardingItemParameters: 0=Beijing,1=Shanghai,2=Guangzhou

SimpleJob

@Component
public class MyJob implements SimpleJob {@Autowiredprivate OrderMapper orderMapper;@Overridepublic void execute(ShardingContext context) {
//        System.out.println(context.getShardingItem());
//        System.out.println(context.getShardingParameter());// 定时执行逻辑}
}

简单任务可以分片执行,如果部分片,将并发执行,但是每次获取全部数据进行执行,会导致内存问题所以进行以下优化

DataflowJob

@Component
public class SpringBootDataflowJob implements DataflowJob<Order> {@Autowiredprivate OrderMapper orderMapper;@Overridepublic List<Order> fetchData(final ShardingContext shardingContext) {List<Order> orders = orderMapper.selectList(new LambdaQueryWrapper<Order>().eq(Order::getArea, shardingContext.getShardingParameter()).eq(Order::getStatus, 0).last("limit 10"));// 获取数据return orders;}@Overridepublic void processData(final ShardingContext shardingContext, final List<Order> data) {for (Order order : data) {order.setStatus(1);orderMapper.updateById(order);System.out.println("----------------------------------");}}
}

使用该方式可以控制每次获取数据的多少,降低内存压力

强调一点,在修改配置后,最好删除zookeeper节点,因为在实例注册有缓存,容易导致配置失效,我在使用过程中,发生cron失效的问题,删除zookeeper后,重启生效

相关文章:

  • 6.11 note
  • ImportError: cannot import name ‘PfeifferConfig‘ from ‘transformers‘【已解决】
  • 再说一说LangChain Runnable接口
  • 酒店管理系统开发:量身定制,助力酒店高效管理与服务升级
  • uniapp uni.createAnimation为文件交换位置动画效果
  • Uniapp实现多选下拉框
  • Linux C学习路线全概括及知识点笔记3-网络编程
  • uniapp音乐播放createInnerAudioContext
  • # include<heαd.h>和# include″heαd.h″的区别
  • Argocd 运维与最佳实践
  • 【uniapp】小程序中input输入框的placeholder-class不生效
  • 【C++】来学习使用set和map吧
  • matlab分布式电源微电网潮流
  • DAS-U250高性能分布式光纤声波传感器
  • Spring @Scope, @Lazy, @DependsOn, @Required, @Lookup
  • 机器学习核心概念速览
  • Springboot项目的目录结构
  • AI赋能Automa二次开发
  • Spring @Qualifier,@Primary
  • 分布式ID实现方案实战示例总结
  • 响应式网站都有哪些/产品软文是什么意思
  • 网站小图片素材/网站建设的技术支持
  • 襄阳网站建设价格/b站好看的纪录片免费
  • 重庆网站建设 吧/吉林关键词优化的方法
  • 北京市建设部网站/今日nba数据帝
  • 做网站题材/佛山网页搜索排名提升