当资源无法调用其他步骤并重试抛出异常的同一步骤时,如何处理 FlatFileItemReader 异常?

2024-03-02

我正在使用 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 ?

我不知道如何使用它们?


对于此类问题,请使用JobExecutionDecider http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/job/flow/JobExecutionDecider.html如果在其他情况下步骤 B 的文件不存在,则将您的作业流程重定向到步骤 A。
这个解决方案更加清晰,显示了您工作的真实流程,而无需隐藏在异常管理后面(例如,如果 SB 维护者决定更改 FlatFileReader 异常层次结构怎么办)?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当资源无法调用其他步骤并重试抛出异常的同一步骤时,如何处理 FlatFileItemReader 异常? 的相关文章

随机推荐

  • 通过三种方法计算 CCA

    我最近研究了 CCA 的概念 并想在 MATLAB 中实现它 但是有一个现有的 matlab 命令佳能 http in mathworks com help stats canoncorr html展示 我想编写自己的代码 我对其进行了广泛
  • SQL 如何根据现有列的计数为新列创建值?

    我有一个正在读取的临时表 我想查看只有两个等级值的列之一 3 或 4 并构建两个新列 一个保存 3 的计数和另一个用于保存 4 的计数 按特定分组 我的代码看起来像这样 Select Max Counting as Total studen
  • 使用 VPC 配置添加 AWS Lambda 导致访问 S3 时超时

    我尝试从 AWS Lambda 访问 S3 和 VPC 上的资源 但由于我将 AWS Lambda 配置为访问 VPC 因此访问 S3 时超时 这是代码 from future import print function import bo
  • 单元测试覆盖调用 super() 的方法

    我试图找出为重写方法编写单元测试的最佳方法 该方法调用 super 作为最后一步 基本上 我想在基类中使用参数之前对其进行处理 下面是一个方法的示例 Override public JobExecution run Job job JobP
  • 如果没有尾部斜杠,Nginx 会导致 301 重定向

    我在使用 NAT 的虚拟机中运行 nginx 当我从主机访问它时遇到重定向问题 按预期工作 http localhost 8080 test index htm works http localhost 8080 test works 没有
  • Java 中有标准的 Option 或 Nullable 类吗?

    Nullable C 的含义有点不同 但无论如何Option 斯卡拉 和Nullable可以用来表达 有价值或无价值 的概念 例如 当您想在字符串中查找子字符串时 最好返回 Option Int 在 Scala 中 而不是晦涩难懂的 1 作
  • 如何使用dispatchEvent提交无按钮表单

    如果我有一个无按钮的表单 并且我想测试可能的 onsubmit 函数是否返回 true 然后提交它 这是我当前的代码 运行良好 var form document getElementById form var evt document c
  • 替换 PHP 数组键中的子字符串

    假设您有一个像这样的 PHP 数组 来自 mysqli 查询 array user id gt 1 user name gt User user email gt email protected cdn cgi l email protec
  • 将类名添加到 uibinder xml 文件中的元素

    以下内容替换任何当前的 css 类名称 看来是叫setStyleName
  • 如何使用 xquery update 将节点内的文本转换为子节点?

    我有一个 xml 文档 例如
  • 检查模拟对象的类类型

    我正在测试一个方法 该方法获取一个对象并检查该对象是否是存储为实例变量的类的实例 到目前为止没有问题 但在测试中我必须使用模拟 并且这些模拟之一是传递给该方法的对象 而现在 事情变得棘手了 我们看一下代码 我总结了本次测试的代码 Class
  • 如何在VBA中的公式中插入变量

    有人能解决这个问题吗 Sub test Dim i as integer For I 1 to 10 ActiveCell Offset 0 2 Formula Sum E15 i Next I End Sub 你的实际目标不清楚 你可能想
  • 编辑字典列表中的值?

    my dicts key1 value1 key2 value2 key1 value1 key2 value2 key1 value1 key2 value2 将 value2 的所有实例替换为 value3 的最有效方法是什么 我没有做
  • TDE 启用对数据库性能有何影响?

    如果我在数据库上使用透明数据加密 会对数据库性能产生任何影响吗 这会导致数据库索引出现问题吗 有些人已经对此进行了测试 参见here http www databasejournal com features mssql article p
  • 跨行对 Pandas 数据框进行分组

    我有一个这样的csv client1 client2 client3 client4 client5 client6 amount Comp1 4 475000 Comp2 16 305584 Comp3 4 050000 Comp2 Co
  • Android 上的电子邮件活动

    我想从 Android 虚拟机发送电子邮件到我的 Gmail 帐户 问题 但是按下发送按钮后我得到 没有应用程序可以执行此操作 这是我的代码 Intent sendIntent new Intent Intent ACTION SEND s
  • GWT 中自动登录的会话和 Cookie

    我知道已经有很多问题了 但我似乎仍然没有找到明确的答案 我想要做的是让用户在登录两周后或直到他们注销之前被记住 以下是我认为应该发生的事情 我想知道是否有更多经验的人可以告诉我我是对还是错 用户首次登录 对服务器的 RPC 调用返回一个 U
  • 如何发布c# windows应用程序安装程序

    我正在尝试发布 C Windows 应用程序 我尝试安装 Shield 和 Visual Studio 安装程序 但它无法正常工作 此安装程序只能安装在安装了 Visual Studio 的笔记本电脑或 PC 上 谁能帮助我需要什么先决条件
  • 使用 gridsearchcv 的内存泄漏

    Problem 我的情况似乎是运行 gridsearchcv 时出现内存泄漏 当我运行 1 或 32 个并发工作线程 n jobs 1 时 会发生这种情况 以前我在 ubuntu 16 04 上运行过多次 没有出现任何问题 但最近升级到 1
  • 当资源无法调用其他步骤并重试抛出异常的同一步骤时,如何处理 FlatFileItemReader 异常?

    我正在使用 Spring Batch 远程分区 我的第一步为所有其他步骤准备输入文件 其他步骤处理输入文件 要在所有 4 台服务器上创建输入文件 我的第一步应该在所有服务器上运行 因此 我在所有服务器上设置了消费者并发数 1 网格大小 4