并发处理业务
数据量大,并发度高,要支持事物,回滚,并发机制。事务、并发、监控、执行等,并不提供相应的调度功能。因此,如果我们希望批处理任务定期执行,可结合 Quartz 等成熟的调度框架实现。
业务场景:
///分布式下面的批处理系统有Hadoop,有时间可以研究一下,它需要特定的场景
================================================================================================
1.系统业务量很大的情况下,可以现将业务暂时存储下来,在系统不忙的情况下进行批量的处理(就是时候进行归档处理),Spring Batch刚好就是这样的一个框架。
2.主要有基础层,核心层,应用层
3.设计
JobRepository:批处理的任务仓库-----所有提交待处理的批处理任务
JobLanucher:批处理的调度管理器------启动批处理服务,开始处理
Job:具体的批处理作业----------------具体的批处理作业 ?这个可以挂接我们自己的业务
Step:一个批处理作用的一个过程
ItemReader:读取---获取数据
ItemProcessor:处理数据
ItemWriter:写入持久化数据
上述就是批处理的一个处理流程,Spring Batch给我们统一管理,我们仅仅把自己的业务挂接在其组件上即可。
============================================================================================
1、commit-interval:批量进行提交(写入)--reader数目为commit-interval数目时,writer提交写入。
2、retry-limit:此步骤失败后重拾的最大次数,如果超过这个数目,就不会重试。
3、retryable-exception-classes:重试的条件(一般就是通过异常进行中断或者自定义策略)-include,exclude
4、retry-policy:自定义重试的策略----就是条件是什么就可以知道要重试了,有这个retryable-exception-classes不生效SkipPolicy
5、skip-limit:出错进行跳过
6、skippable-exception-classes:-include,exclude
7、skip-policy:自定义策略RetryPolicy
注:任务失败后,首先应该重试几次,如果不行的话,再采用Skip机制,采用Listeners机制记录Log记录(CheckPoint),之后进行任务重做,其次在进行任务的重新启动执行。
=============================================================================================
1.tasklet--实现Tasklet接口即可
2.tasklet-chunk---里面有reader,writer,processor
3.listeners-监听器
==============================================================================================
1、split并发--task-executor
2、decision
3、
=============================================================================================
截图来自网络。
可以作为ESB端的批处理组件