Chunk
面向批的处理操作,提供了标准的
read
process
write
三种操作。 除此外还提供了异常处理 可靠性 稳定性 异常重入能力。具体包含 事务提交间隔 跳过策略 重试策略 读事务队列 批处理完成策略
属性
- reader 读数据BeanID
- processor 处理数据BeanID
- writer 写数据BeanID
- commit-interval 提交间隔,指读多少条数据后再才交给writer处理
- skip-limit 异常发生时,允许跳过的最大数
- skip-policy 跳过策略BeanID
- retry-policy 重试策略BeanID
- retry-limit 任务执行重试的最大次数
- cache-capacity retry-policy 缓存的大小
- reader-transactional-queue 从一个事务性的队列读取数据
- processor-transactional 处理数据是否在事务中
- chunk-completion-policy 批处理完成策略
子元素
<chunk>
<reader/>
<processor/>
<writer/>
<streams/>
<retry-policy/>
<retryable-exception-classes/> <!--定义一组触发重试的异常-->
<retry-listeners/> <!--重试监听器-->
<skip-policy/> <!--跳过策略-->
<skippable-exception-classes/> <!--定义一组触发跳过的异常-->
<listeners/> <!--监听器-->
</chunk>
提交间隔
应用场景:如果读一条数据处理后就写一条数据,这样会大量消耗系统的资源。通过commit-interval
可以指定,当处理多少条数据后再写入数据库中。
完成策略
如提交间隔只是完成策略的一种实现,它不能与commit-interval
同时存在。你有可能想通过时间来控制提交间隔而不是数量。如:当过10分钟后再操作写入操作。 这时可以通过chunk-completion-policy
来指定,要实现CompletionPolicy
异常跳过
应用场景:当有些任务允许有少许的失败,当然失败次数要控制在一定次数以内。这时就需要使用skip-limit
skip-policy
和 retryable-exception-classes
来处理
重试
应用场景:当有些操作涉及网络,网络有可能会出现波动而导致失败,但过会又会好的,这时就需要有重试的机制。可以使用 retry-policy
retry-limit
cache-capacity
retryable-exception-classes
来处理
读、处理事务
reader-transactional-queue
表示是否从一个事务性的队列读取数据。如果是,一但发生异常会导致事务回滚,从队列中读取的数据同样会被重新放回到队列中。一但reader-transactional-queue
设置为true,processor-transactional
也必须是true
拦截器
- ChunkListener 或
@BeforeChunk
@AfterChunk
- ItemProcessListener 或
@BeforeProcess
@AfterProcess
@OnProcessError
- ItemReadListener 或
@BeforeRead
@AfterRead
@OnReadError
- ItemWriteListener 或
@BeforeWrite
@AfterWrite
@OnWriteError
- SkipListener 或
@OnSkipInRead
@OnSkipInWrite
@OnSkipInProcess
- RetryListener
来源:oschina
链接:https://my.oschina.net/u/2552286/blog/3167001