我有一个春季批处理作业,其中 ItemWriter 发布到 Web 服务。我有一个必须转换并发布到 Web 服务的输入文件,我没有直接访问数据库的权限。
我的问题是,我应该如何处理来自 Web 服务的失败响应?例如,如果我正在处理一条记录并将其发送到 Web 服务,但 Web 服务响应,“失败 - 找不到该 id”我应该如何记录该记录在春季失败(在商业意义上)批?我希望抛出一个可跳过的异常,以便在 Spring Batch Admin 中记录写入跳过,但我看到当我从项目编写器抛出错误时,该块会自动回滚。然后当块被重新处理时,记录第二次被发送到 Web 服务。
对这种情况有什么建议?诸如将不良记录发送给另一个将其记录在单独位置的项目编写器之类的东西?或者有没有办法将其记录为写跳过而不回滚?我意识到这可能是我们应用程序中一个更大的架构问题,并且愿意接受建议。
谢谢!