sping batch 使用笔记

来源:互联网 发布:程序员必须知道的网站 编辑:程序博客网 时间:2024/06/05 08:36

为什么要使用 spring batch?

一.工作当中需要做数据同步,单表数据 在 10W 左右。

二.可以解耦合,将业务操作拆分为job,step,tasklet。

1.job可以配置个 baseJob 设置监听器,做 统一的异常监听,并且发送消息通知开发人员异常清空;

2.step在一个job 中可以有多个,next 可以设置 下一个 需要执行的 step,step 中 设置tasklet。

3.tasklet可以自己写个去BaseTasklet去实现Tasklet,前面是这样做的,后面感觉没什么必要,重点需要关注的其实 就是 Reader,Processor,Writer,流程图如下


注:大框是类,小框是相应类中的方法。



3.性能好,先直接 插入了2W 多条数据试了下,直接使用 jdbcTempleate 直接插入,速度是 35秒,使用 spring batch,并且配置 reader,process,writer,速度是27秒,反复测试的结果,差距不是很大, spring batch 我设置的 是 5000 提交一次,这里提醒下,批量插入,切记要注意 autoCommit 的值为 false,不管是  使用 事物达到,还是直接获得 db connection 设置,在事物处理中的话,默认是 false,事物结束才提交。

4.可以实现异步 处理和写,一边 process ,一边writer,但是 对于批量插入或者process 时间少的业务环境显得鸡肋,因为批量插入不可能一次性处理一条插入一条,这样插入的速度 会极大的受到影响。

5.可配置灵活性强,job 可以通过配置异步执行。

原创粉丝点击