我正在使用弹簧批处理远程分区。我的第一步为所有其他步骤准备输入文件。其他步骤处理输入文件。
要在所有 4 个服务器上创建输入文件,我的第一步应该在所有服务器上运行。所以我在所有服务器上设置了消费者并发 1,网格大小 4 = 服务器数量。
但是某些服务器上的消费者会多次使用步骤执行请求消息,因此在其他服务器上,第一步不会运行,因此输入文件没有准备好,这会导致尝试处理这些文件的其他步骤失败。
如果资源(输入文件)不可用,如果任何步骤引发异常,我想运行第一步,然后重试引发异常的同一步骤。
如果资源不可用,如何在严格模式下处理 FlatFileItemReader 引发的异常并调用第一步准备输入文件并重试引发异常的同一步骤?
更多细节在这里
在文档中提到了两种类型的异常
出于这个原因,Spring Batch 提供了用于处理解析异常的异常层次结构:FlatFileParseException 和 FlatFileFormatException。当尝试读取文件时遇到任何错误时,FlatFileItemReader 会抛出 FlatFileParseException。FlatFileFormatException 由 LineTokenizer 接口的实现引发,并指示在标记化时遇到更具体的错误。
这是否意味着FlatFileParseException
在读取现有文件时出现错误或文件根本不存在时抛出?
或在源代码中,
FlatFileItemReader<T> extends AbstractItemCountingItemStreamItemReader
哪里AbstractItemCountingItemStreamItemReader:read
扔UnexpectedInputException
?
我不确定如何使用它们?