如何创建春批过滤项目的报表? [英] how to create a report on filtered items in spring-batch?

查看:9
本文介绍了如何创建春批过滤项目的报表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我基本上想用批中每个步骤中过滤掉的项创建一个报告。目前,我可以使用Spring-Batch-admin查看有多少项被过滤(和跳过),但我想要项目列表,这样我就可以手动处理它们。

我的步骤遍历一系列客户端,并从第三方来源获取其中的数据。对于我用来获取数据的每个帐户,我都有用户名和密码。客户端可能没有凭据。在运行处理器之前,我会用过滤发送这些信息。但客户可能有错误的凭据(他打错了),然后我也想用过滤,但"方式不同"。我不想跳过这些项目,因为我不想设置一个限制,超过这个限制,我的工作就会失败。即使所有这些都是空的或不正确的,我也想继续进行下一阶段。

我的区块当前由一个数据库读取器、一个数据库写入器和一个CompositeItemProcessor组成:

  • 验证客户端是否具有凭据,并筛选出没有凭据的凭据。
  • 运行数据增强器(另一个ItemProcessor)获取数据。如果此应用程序因凭据不正确而出错,它也会筛选该项目(返回NULL)。

我想做的是:

  • 区分(在同一步骤中)发生的两种"类型"的筛选。目前,我在Spring-Batch-admin的filterCount字段中看到它们全部加在一起。
  • 发送包含为每个案例筛选的客户端的报告,以便稍后手动处理。我还希望聚合几个步骤中筛选的项目,并在结束时将它们一起发送。

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

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

谢谢!

推荐答案

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

我在相当多的春批作业中都成功地做到了这一点,这种模式并不少见。

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

这篇关于如何创建春批过滤项目的报表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆