我基本上想创建一个报告,其中包含在我的批次的每个步骤中被过滤掉的项目。目前我可以看到有多少被 spring-batch-admin 过滤(和跳过),但我想要项目列表,以便我可以手动处理它们。
我的步骤遍历客户列表,并从第三方来源获取有关他们的数据。我用于获取数据的每个帐户都有用户名+密码。客户端可能没有凭据。我在运行处理器之前过滤它们。但是客户可能有错误的凭据(他输错了),然后我也想过滤它,但“不同”。我不想跳过这些项目,因为我不想设置一个限制,之后我的工作就会失败。即使它们都是空值或不正确的,我也想继续下一个阶段。
我的块目前包括一个数据库读取器、数据库写入器和一个CompositeItemProcessor
:
- 验证客户端是否有凭据并过滤掉那些没有的。
- 运行数据增强器(另一个
ItemProcessor
)来获取数据。万一这一个因凭据错误而出错,它也会过滤该项目(返回 null)。
我想做的是:
- 区分发生的两种“类型”过滤(在同一步骤)。
filterCount
目前,我在 spring-batch-admin的字段中看到所有这些都汇总在一起。 - 发送包含针对每个案例过滤的客户端的报告,以便以后手动处理。我还想从几个步骤聚合过滤的项目,并在最后将它们一起发送。
最好的方法是什么?我可以知道是什么ItemProcessor
导致该项目被过滤吗?我知道在ItemListeners
处理项目后会收到通知,我应该以某种方式使用这些吗?我如何将结果(过滤的项目)存储到工作结束?
我试图寻找这个的最佳实践,因为我不认为我是唯一一个在他的工作运行后试图创建报告的人,但找不到任何有用的东西..
谢谢!