栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用于动态块大小的Spring Batch自定义完成策略

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用于动态块大小的Spring Batch自定义完成策略

最简单的方法是按国家划分您的步骤。这样,每个国家都可以迈出自己的一步,您还可以跨国家穿梭,​​以提高绩效。

如果需要一个读者,则可以包装委托

PeekableItemReader
并扩展
SimpleCompletionPolicy
以实现您的目标。

public class CountryPeekingCompletionPolicyReader extends SimpleCompletionPolicy implements ItemReader<CountrySpecificItem> {    private PeekableItemReader<? extends CountrySpecificItem> delegate;    private CountrySpecificItem currentReadItem = null;    @Override    public CountrySpecificItem read() throws UnexpectedInputException, ParseException, NonTransientResourceException, Exception {        currentReadItem = delegate.read();        return currentReadItem;    }    @Override    public RepeatContext start(final RepeatContext context) {        return new ComparisonPolicyTerminationContext(context);    }    protected class ComparisonPolicyTerminationContext extends SimpleTerminationContext {        public ComparisonPolicyTerminationContext(final RepeatContext context) { super(context);        }        @Override        public boolean isComplete() { final CountrySpecificItem nextReadItem = delegate.peek(); // logic to check if same country if (currentReadItem.isSameCountry(nextReadItem)) {     return false; } return true;        }    }}

然后根据您的上下文定义:

<batch:tasklet>    <batch:chunk chunk-completion-policy="countrySpecificCompletionPolicy" reader="countrySpecificCompletionPolicy" writer="someWriter" /></batch:tasklet><bean id="countrySpecificCompletionPolicy" >     <property name="delegate" ref="peekableReader" /></bean><bean id="peekableReader"  />

编辑: 仔细考虑您的问题,分区是最干净的方法。使用分区步骤,将从步骤执行上下文向每个ItemReader(确保

scope="step"
)传递一个
countryName
。是的,您需要一个自定义
Partitioner
类来构建执行上下文图(每个国家/地区一个条目)和一个硬编码的提交间隔,该间隔足够大以容纳最大的工作单元,但是此后一切都非常简单,并且每个从属步骤仅是一个单独的步骤,对于可能遇到问题的任何国家,重新启动应该是一件轻而易举的事。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号