0

我正在使用弹簧批处理远程分区。我的第一步为所有其他步骤准备输入文件。其他步骤处理输入文件。

要在所有 4 个服务器上创建输入文件,我的第一步应该在所有服务器上运行。所以我在所有服务器上设置了消费者并发 1,网格大小 4 = 服务器数量。

但是某些服务器上的消费者会多次使用步骤执行请求消息,因此在其他服务器上,第一步不会运行,因此输入文件没有准备好,这会导致尝试处理这些文件的其他步骤失败。

如果资源(输入文件)不可用,如果任何步骤引发异常,我想运行第一步,然后重试引发异常的同一步骤。

如果资源不可用,如何在严格模式下处理 FlatFileItemReader 引发的异常并调用第一步准备输入文件并重试引发异常的同一步骤?

更多细节在这里

文档中提到了两种类型的异常

出于这个原因,Spring Batch 提供了用于处理解析异常的异常层次结构:FlatFileParseException 和 FlatFileFormatException。当尝试读取文件时遇到任何错误时,FlatFileItemReader 会抛出 FlatFileParseException。FlatFileFormatException 由 LineTokenizer 接口的实现引发,并指示在标记化时遇到更具体的错误。

这是否意味着FlatFileParseException在读取现有文件时出现错误或文件根本不存在时抛出?

或在源代码中,

FlatFileItemReader<T> extends AbstractItemCountingItemStreamItemReader哪里AbstractItemCountingItemStreamItemReader:readUnexpectedInputException

我不确定如何使用它们?

4

1 回答 1

1

对于此类问题JobExecutionDecider,如果在其他情况下步骤 B 的文件不存在,请使用 a 将您的工作流程重定向到步骤 A。
这个解决方案更清晰,并且显示了你的工作的真实流程,而不隐藏在异常管理后面(例如,如果 SB mantainer 决定更改 FlatFileReader 异常层次结构怎么办)?

于 2014-06-18T09:37:57.550 回答