我正在使用 Spring Batch 远程分区。我的第一步为所有其他步骤准备输入文件。其他步骤处理输入文件。
要在所有 4 台服务器上创建输入文件,我的第一步应该在所有服务器上运行。因此,我在所有服务器上设置了消费者并发数 1,网格大小 4 = 服务器数量。
但是某些服务器上的使用者会多次使用步骤执行请求消息,因此在其他服务器上,第一步不会运行,因此输入文件不会准备好,这会导致尝试处理这些文件的其他步骤失败。
如果资源(输入文件)不可用,如果任何步骤抛出异常,我想运行第一步,然后重试引发异常的相同步骤。
如果资源不可用,如何处理 FlatFileItemReader 在严格模式下抛出的异常,并调用第一步来准备输入文件并重试抛出异常的同一步骤?
更多细节是here https://stackoverflow.com/questions/24237074/how-to-execute-some-partition-step-on-all-servers-only-once-using-spring-batch-p
In 文档 http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#exceptionHandlingInFlatFiles提到了两种类型的例外
因此,Spring Batch 提供了一个异常层次结构来处理解析异常:FlatFileParseException 和 FlatFileFormatException。当尝试读取文件时遇到任何错误时,FlatFileItemReader 会引发 FlatFileParseException。 FlatFileFormatException 由 LineTokenizer 接口的实现引发,并指示标记化时遇到的更具体的错误。
是不是意味着FlatFileParseException
当读取现有文件时出现错误时抛出,或者当文件根本不存在时抛出?
或者在源代码中,
FlatFileItemReader<T> extends AbstractItemCountingItemStreamItemReader
where AbstractItemCountingItemStreamItemReader:read
throws UnexpectedInputException
?
我不知道如何使用它们?