文章目录

  • 一、SpringBatch配置多线程
  • 二、SpringBatch多线程的tasklet配置

前言:使用单线程,单个进程作业可以解决许多批处理问题,如果我们想要job执行的速度更快,SpringBatch提供了对多线程的支持。只需要简单的配置,我们的job就可以使用多线程运行。

代码已上传GitHub上面地址:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch

SpringBatch其它文章直通车:

  • SpringBatch读单个文件(FlatFileItemReader)和写单个文件(FlatFileItemWriter)(一)
  • SpringBatch顺序读取多文件(MultiResourceItemReader)和顺序写文件(MultiResourceItemWriter)(二)
  • SpringBatch读数据库(MyBatisPagingItemReader)(三)
  • SpringBatch读文件(FlatFileItemReader)写据库(MyBatisBatchItemWriter)(四)
  • SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)
  • SpringBatch 监听器之Chunk监听器(ChunkListener)和Skip监听器(SkipListener)(六)

一、SpringBatch配置多线程

配置多线程最简单的方法是,在Step配置中添加一个TaskExecutor

多线程Step

@Beanpublic Step catThreadStep() {return stepBuilderFactory.get("catThreadStep")// .listener(catStepListener).listener(catChunkListener).<Cat, CafeCat>chunk(10).reader(catCommonMybatisItemReader()).processor(cafeCatProcessor).writer(cafeCatCommonFileItemWriter()).taskExecutor(taskExecutor()).build();}

TaskExecutor实现类

@Beanpublic TaskExecutor taskExecutor(){return new SimpleAsyncTaskExecutor("spring_batch");}

注意:上述配置的结果是Step通过在单独的执行线程中读取,处理和写入每个块(每个提交间隔)来执行。作业的执行没有固定的顺序。

二、SpringBatch多线程的tasklet配置

多线程tasklet默认t配置为4,您可能需要增加tasklet以确保线程池充分利用。
在Step中提供了对tasklet数量配置,关键字为:throttleLimit

@Beanpublic Step catThreadStep() {return stepBuilderFactory.get("catThreadStep")// .listener(catStepListener).listener(catChunkListener).<Cat, CafeCat>chunk(10).reader(catCommonMybatisItemReader()).processor(cafeCatProcessor).writer(cafeCatCommonFileItemWriter()).taskExecutor(taskExecutor()).throttleLimit(8).build();}

我们在用SpringBatch多线程时候,一定要注意作业的执行没有固定的顺序。所以多线程用的时候一定要慎用。

SpringBatch 多线程(TaskExecutor)启动Job详解 (七)相关推荐

  1. SpringBatch 配置并行启动Job详解 (八)

    文章目录 一.创建并行job 前言:在日常业务中可能需要job并行执行,SpringBatch支持job并行步执行,并且配置简单. 代码已上传GitHub上面地址:https://github.com ...

  2. PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析

    PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系 ...

  3. php多线程安装pthreads步骤详解

    摘要: 本文讲的是php多线程安装pthreads步骤详解, PHP扩展下载:https://github.com/krakjoe/pthreads PHP手册文档:http://php.net/ma ...

  4. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

  5. SSH服务详解(七)– SSH 连接 Github

    SSH 连接 Github SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 S ...

  6. 【面试:并发篇09:多线程:interrupt 方法详解】

    [面试:并发篇09:多线程:interrupt 方法详解] 00.前言 如果有任何问题请指出,感谢. 01.介绍 程序中,有些线程的中断需要外部干预,比如线程中存在while(true)循环,或者存在 ...

  7. linux upstart脚本,Linux upstart启动方式详解

    Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理.RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方 ...

  8. 家用计算机启动过程 装载主引导记录,计算机启动过程详解

    综述: 计算机启动时经过了哪些过程: 计算机接通电源后,第一步要进行加电自检,也就是POST(Power On Self Test),检查RAM.驱动器等:第二步BIOS会读取活动分区主引导记录的启动 ...

  9. idea 执行java maven,IDEA的run maven方式启动步骤详解

    安装jetty插件 1. 找到Plugins,查找jetty插件,安装"IDEA Jetty Runner",安装好后重启IDEA 安装插件:Maven Helper 方法同Jet ...

最新文章

  1. mysql三锁,mysql锁机制之表锁(三)
  2. 百度相关搜索软件_Python与seo,百度关键词相关搜索关键词采集源码
  3. You should rebuild using libgmp = 5 to avoid timing attack vulnerability
  4. 利用GoogleEarth影像打造Skyline MPT案例(转载)
  5. oracle进城有哪些,oracle主要进程详解
  6. sip中的100trying到底有啥用
  7. 利用反射过滤对象的null值
  8. 计算机前置usb应用,电脑前置usb和后置usb的区别
  9. Linux常用命令3
  10. 走出海量数据及访问量压力困境
  11. Web Deploy 发布网站错误 检查授权和委派设置
  12. php redis 事务应用,redis事务有什么用
  13. 什么叫结构化程序设计?它的主要内容是什么
  14. 计算机各按键的名称,电脑键盘各键名称及功能 电脑键盘上每个键的作用-笑语冰蝉...
  15. 企业风险管理与内部控制常见问题与思考
  16. 用原生js代码实现虚拟滚动条
  17. overlay的设计
  18. 【京东云】通过SDK创建多个弹性IP
  19. 解决白盒、mock、性能、自动化测试脚本中的数据自动生成问题——Spock-Genesis
  20. 数据库:数据的独立性

热门文章

  1. 趣学python3(46)--求素数
  2. 温州大学《机器学习》课程课件(十、聚类)
  3. 使用Scikit-Learn轻松实现数据缩放
  4. 2018-2019年度 AI方向Top10 综述
  5. 《交互式线性代数》完整版正式发布!支持在线全交互式体验(含源码,离线也能看)...
  6. 首发:一份国内机器学习爱好者的性别比例的抽样调查
  7. 100万+奖金池!目标检测、车牌识别、人体分割等赛事全面启动! ECV-2021 来了
  8. 炼丹知识点:模型评估里的陷阱
  9. 视频通信关键技术探索及实践
  10. 互联网1分钟 |1119