Spring batch 回滚后项目成功,但在处理器中报告为跳过

Spring batch 回滚后项目成功,但在处理器中报告为跳过,spring-batch,Spring Batch,我有一个处理器,其中执行一段类似这样的代码: if (!file.exists()) { logger.warn("Unknown file " + item.getId()); SkipReport report = new SkipReport(item.getId(), "Document Skipped"); List<SkipReport> reports = new ArrayList<Ski

我有一个处理器,其中执行一段类似这样的代码:

if (!file.exists()) {
            logger.warn("Unknown file " + item.getId());
            SkipReport report = new SkipReport(item.getId(), "Document Skipped");

            List<SkipReport> reports = new ArrayList<SkipReport>();
            reports.add(report);
            try {
                //reporting error in csv file
                reportWriter.write(reports);
            } catch (Exception e) {
                logger.error(e.getMessage());
            }
            throw new MyException();
}
这些类型的文件存储在nfs中,因此,据我所知,在非常罕见的情况下,无法读取这些文件,但通常在回滚后它们会成功。问题在于,项目第一次抛出此异常时,会报告一个错误reportedreportWriter.write,该错误无效


是否有正确报告此问题的方法?可能在回滚后在侦听器中编写报告。

为什么不在Spring批处理中使用跳过功能?我们为您处理跳绳。我希望你能通过斯基普利斯滕报告。说得好!我在处理过程中处理报告,因为我也报告警告和其他事情。因此,我想象使用SkipListener,在OnSkipin过程中,我可以检查异常是否与MyException匹配,并在那里报告问题?明白了!如果您只想报告该类型的异常,您甚至不需要执行异常检查,因为您配置了跳过哪些异常。