为什么要使用 spring batch?

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

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

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

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

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

sping batch 使用笔记


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



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

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

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

相关文章:

  • 2021-09-06
  • 2021-11-27
  • 2021-12-10
  • 2021-12-26
  • 2021-07-17
猜你喜欢
  • 2022-12-23
  • 2021-11-24
  • 2021-05-24
  • 2022-12-23
  • 2021-11-07
  • 2022-12-23
  • 2021-11-12
相关资源
相似解决方案