SpringBatch 多线程(TaskExecutor)启动Job详解 (七)
文章目录
- 一、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详解 (七)相关推荐
- SpringBatch 配置并行启动Job详解 (八)
文章目录 一.创建并行job 前言:在日常业务中可能需要job并行执行,SpringBatch支持job并行步执行,并且配置简单. 代码已上传GitHub上面地址:https://github.com ...
- PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析
PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系 ...
- php多线程安装pthreads步骤详解
摘要: 本文讲的是php多线程安装pthreads步骤详解, PHP扩展下载:https://github.com/krakjoe/pthreads PHP手册文档:http://php.net/ma ...
- Java多线程之线程池详解
Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...
- SSH服务详解(七)– SSH 连接 Github
SSH 连接 Github SSH服务详解(一)–Linux SSH 服务器与客户端的安装与启动 SSH服务详解(二)–使用私钥登录 SSH 服务器(免密登录) SSH 服务详解 (三)-- 使用 S ...
- 【面试:并发篇09:多线程:interrupt 方法详解】
[面试:并发篇09:多线程:interrupt 方法详解] 00.前言 如果有任何问题请指出,感谢. 01.介绍 程序中,有些线程的中断需要外部干预,比如线程中存在while(true)循环,或者存在 ...
- linux upstart脚本,Linux upstart启动方式详解
Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理.RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方 ...
- 家用计算机启动过程 装载主引导记录,计算机启动过程详解
综述: 计算机启动时经过了哪些过程: 计算机接通电源后,第一步要进行加电自检,也就是POST(Power On Self Test),检查RAM.驱动器等:第二步BIOS会读取活动分区主引导记录的启动 ...
- idea 执行java maven,IDEA的run maven方式启动步骤详解
安装jetty插件 1. 找到Plugins,查找jetty插件,安装"IDEA Jetty Runner",安装好后重启IDEA 安装插件:Maven Helper 方法同Jet ...
最新文章
- mysql三锁,mysql锁机制之表锁(三)
- 百度相关搜索软件_Python与seo,百度关键词相关搜索关键词采集源码
- You should rebuild using libgmp = 5 to avoid timing attack vulnerability
- 利用GoogleEarth影像打造Skyline MPT案例(转载)
- oracle进城有哪些,oracle主要进程详解
- sip中的100trying到底有啥用
- 利用反射过滤对象的null值
- 计算机前置usb应用,电脑前置usb和后置usb的区别
- Linux常用命令3
- 走出海量数据及访问量压力困境
- Web Deploy 发布网站错误 检查授权和委派设置
- php redis 事务应用,redis事务有什么用
- 什么叫结构化程序设计?它的主要内容是什么
- 计算机各按键的名称,电脑键盘各键名称及功能 电脑键盘上每个键的作用-笑语冰蝉...
- 企业风险管理与内部控制常见问题与思考
- 用原生js代码实现虚拟滚动条
- overlay的设计
- 【京东云】通过SDK创建多个弹性IP
- 解决白盒、mock、性能、自动化测试脚本中的数据自动生成问题——Spock-Genesis
- 数据库:数据的独立性