Chunk介绍
Chunk元素定义面向批的处理操作,Chunk典型地提供了标准的read、process、write三种操作。
属性 | 说明 | 默认值 |
---|
commit-interval | 提交间隔,读出、处理指定的数据后,通过writer批量写入,并提交事务 | |
reader | 读取数据的Bean的名字,需要实现org.springframework.batch.item.ItemReader接口 | |
processor | 批处理中的处理逻辑,需要实现接口:org.springframework.batch.item.ItemProcessor | |
writer | 写数据的Bean的名字,需要实现接口:org.springframework.batch.item.ItemWriter | |
skip-limit | 异常发生时,允许跳过的最大数。当跳过数目达到后,数据处理(包括读数据、处理数据、写数据)发生的异常会抛出,导致任务Step失败 | |
skip-policy | 跳过策略Bean,需要实现接口:org.springframework.batch.core.step.skip.SkipPolicy | |
retry-policy | 重试策略Bean,需要实现接口:org.springframework.batch.retry.RetryPolicy | |
retry-limit | 任务执行重试的最大次数 | |
cache-capacity | retry-policy 缓存的大小,缓存用于存放重试上下文 RetryContext,如果超过配置最大值,会发生异常:org.springframework.batch.retry. policy.RetryCacheCapacityExceededException | 4096 |
reader-transactional-queue | 是否从一个事务性的队列读取数据:true 表示从一个事务性的队列中读取数据,一旦发生异常会导致事务回滚,从队列中读取的数据同样会被重新放回到队列中;false 表示从一个没有事务的队列获取数据,一旦发生异常会导致事务回滚,消费掉的数据不会重新放置在队列中 | false |
processor-transactional | 处理数据是否在事务中,true 表示将 processor处理的结果放在缓存中,当执行重试或者跳过策略时可以看到缓存中处理的数据:false 表示不会将 processor处理的数据放在缓存中,即 processor在chunk 的每一条记录仅会执行一次。需要注意:如果将 reader-transactional-queue 设置为 true,则processor-transactional必须设置为true | true |
chunk-completion-policy | 批处理完成策略,需要实现接口:org.springframework.batch.repeat.CompletionPolicy | |
子元素 | 说明 |
---|
reader | 读取数据的Bean的定义,需要实现接口:org.springframework.batch.item.ItemReader |
processor | 批处理中的处理逻辑的定义,需要实现接口:org.springframework.batch.item.ItemProcessor |
writer | 写数据的Bean的定义,需要实现接口:org.springframework.batch.item.Item Writer |
skip-policy | 跳过策略Bean定义,需要实现接口:org.springframework.batch.core.step.skip.SkipPolicy |
retry-policy | 重试策略Bean定义,需要实现接口:org.springframework.batch.retry.RetryPolicy |
retry-listeners | 重试操作监听器,需要实现接口:org.springframework.batch.retry.RetryListener |
streams | 定义一组实现ItemStream的对象,需要实现接口:org.springframework.batch.item.ItemStream。Step 执行期间需要知道 reader、processor、writer 定义的实例哪些是实现接口 ItemStream 的(显现接口 ItemStream 的 reader、processor、writer的对象能够在任务重启的时候从正确的点恢复)。Spring Batch框架自动注册实现了接口ItemStream的对象,如果在reader、processor、writer 中用到的对象没有直接实现接口ItemStream,需要在此处显式注册 |
skippable-exception-classes | 定义一组触发跳过的异常 |
retryable-exception-classes | 定义一组触发重试的异常 |
listeners | 定义一组Chunk的拦截器,需要实现接口:org.springframework.batch.core.ChunkListener |