嗨,我是 Spring 季批次新手 .
我有如下 spring 批的情况:
我需要为所有促销[促销列表]运行一批
- 对于每次促销我需要使用促销属性准备动态查询,并获取所有交易历史记录并为每个用户计算促销点数
这里有上面的动态查询,我想再次从批处理读取,因为它返回最少5万条记录的结果 .
以下是我期待的过程, Spring 季批次是否可行?
-
阅读促销活动[读者逐一阅读促销活动]
-
创建查询并将其放在上下文中
-
将其传递给下一位读者
-
阅读器逐个读取事务
-
处理交易和计算点数
-
处理器
我的问题是不能写嵌套块[一个用于读取促销,一个用于读取事务] .
一种选择是:
为每个促销分区工作,所有促销活动将同时运行,但我们需要一个接一个地运行 .
任何机构都可以为此提出任何建议吗?
1 回答
您不能拥有嵌套块,因此您可以编写自己的CompositeItemReader(伪代码):
但请记住将促销和交易注册为流,并记住管理可重启性 .
或者,如果您确定每个促销都有一个有限的List <>关联交易,您可以使用
ItemProcessor<Promotion,List<Transaction>>
转换单个促销(如基于驾驶查询的ItemReaders):另外一个基于PeekableItemReader和数据持有者的解决方案就像一个描述here
希望这些考虑可能有所帮助!做得好!