gpt4 book ai didi

spring - 如何在 spring-batch 中创建有关过滤项目的报告?

转载 作者:行者123 更新时间:2023-12-02 06:43:53 25 4
gpt4 key购买 nike

我基本上想创建一个报告,其中包含在批处理中的每个步骤中过滤掉的项目。目前,我可以看到有多少个被 spring-batch-admin 过滤(和跳过),但我想要项目列表,以便我可以手动处理它们。

我的步骤运行在客户列表上,并从第三方来源获取有关他们的数据。我用于获取数据的每个帐户都有用户名+密码。客户端可能没有凭据。我在运行处理器之前过滤这些内容。但是客户可能有错误的凭据(他输错了),然后我也想过滤它,但“不同”。我不想跳过这些项目,因为我不想设置一个限制,之后我的工作就会失败。即使它们全部为空或不正确,我也想继续下一阶段。

我的 block 当前由数据库读取器、数据库编写器和 CompositeItemProcessor 组成,其功能是:

  • 验证客户端是否拥有凭据并过滤掉那些没有凭据的客户端。
  • 运行数据增强器(另一个ItemProcessor)来获取数据。万一出现错误凭据错误,它也会过滤该项目(返回 null)。

我想做的是:

  • 区分发生的两种“类型”的过滤(在同一步骤中)。目前,我在 spring-batch-admin 的 filterCount 字段中看到它们全部求和在一起。
  • 向针对每个案例过滤的客户发送报告,以便稍后进行手动处理。我还想通过几个步骤聚合过滤后的项目,并在最后将它们一起发送。

最好的方法是什么?我可以知道是什么 ItemProcessor 导致该项目被过滤吗?我知道有 ItemListeners 在处理项目后会收到通知,我应该以某种方式使用它们吗?如何存储结果(过滤后的项目)直到作业结束?

我试图寻找这方面的最佳实践,因为我认为我不是唯一一个在他的工作运行后尝试创建报告的人,但找不到任何有用的东西..

谢谢!

最佳答案

解决此问题的最佳方法是从 ItemProcessor 内部引发异常并将其过滤为跳过异常。然后使用 SkipListener 将它们写入另一个输出。将详细消息放在异常消息中,以便可以将其包含在输出中。将跳过限制设置为极高的值(例如 999999)将防止您的作业因跳过次数而失败。

我已经在相当多的 Spring Batch 作业中非常成功地完成了这一点,而且这并不是一种罕见的模式。

如果您还有其他问题,请告诉我!

关于spring - 如何在 spring-batch 中创建有关过滤项目的报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com