关于面向块的步骤与现实的 Spring Batch 文档?

2024-04-21

On the 文档 http://docs.spring.io/spring-batch/reference/html/configureStep.htmlSpring Batch 的配置步骤清晰地描述了读取过程和写入是如何执行的。

read
process
...
read
process
// until #amountOfReadsAndProcesses = commit interval
write

对应(根据文档):

List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
    Object item = itemReader.read()
    Object processedItem = itemProcessor.process(item);
    items.add(processedItem);
}
itemWriter.write(items);

但是,当我调试并在读取器的读取方法中放置断点并在处理器的处理方法中放置断点时,我看到以下行为:

read
...
read
// until #amountOfReads = commit interval
process
...
process
// until #amountOfProcesses = commit interval
write

那么文档是错误的吗?或者我是否缺少一些配置以使其表现得像文档(在那里没有找到任何内容)。

我遇到的问题是,现在每次后续读取都取决于处理器的状态。读取器是并行读取两个源的复合体,根据一个源中的读取项目,在一次读取操作期间仅读取第一、第二或两个源。但是要读取哪些源的状态是在处理器中确定的。目前唯一的解决方案是采用提交间隔 1,这对于性能而言并不是非常理想。


简短的回答是,您是对的,我们的文档在分块模型上并不准确。这是需要更新的东西。为什么会这样是有原因的(主要与容错的处理方式有关)。但这并不能解决你的问题。对于您的用例,有几个选项:

  • 使用 JSR-352 配置来配置您的作业 - JSR-352 的处理模型就是我们的文档所说的(他们将其视为福音,而不是 Spring Batch 真正所做的)。由于 Spring Batch 支持 JSR-352,因此只需更改您的配置以及启动作业的方式,您就会得到相同的结果。 JSR-352 有一些限制,这些限制超出了本次讨论的范围,但它是一种选择。
  • 另一种选择是按照 Michael Pralow 的建议去做——虽然我理解您对关注点分离的担忧,但考虑到您的处理器正在生成读者需要的输出(或者您是否共享该状态),听起来您已经违反了该规则以其他方式?)。
  • 其他选项 - 在不了解更多关于您的工作的情况下,可能有其他方法可以很好地构建您的工作(例如将逻辑移动到多个步骤等),并且仍然实现 Spring Batch 试图允许的关注点分离,但我' d 需要查看您的更多配置才能提供帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于面向块的步骤与现实的 Spring Batch 文档? 的相关文章

随机推荐

  • 我如何查看我的应用程序使用了多少超出其虚拟机预算的内存?

    我查看了 DDMS 但没有看到任何内容 谢谢 您应该在 DDMS 的 设备 视图中单击 更新堆 按钮
  • 压缩独特的数据流

    我有大量的整数数组 每个整数都有几千个整数 每个整数通常与前一个整数相同或仅相差一两位 我想将每个阵列缩小到尽可能小 以减少磁盘 IO Zlib 将其缩小到原始大小的 25 左右 这很好 但我不认为它的算法特别适合这个问题 有谁知道对于此类
  • 导航栏中的复选框小部件闪亮

    是否可以在导航栏行中创建复选框小部件 这是一example http www bootply com 103995 我的想法 下面创建一个checkboxInput 但交互性似乎无法正常工作 library shiny ui lt navb
  • 类中的int是存储在栈上还是堆上? [复制]

    这个问题在这里已经有答案了 可能的重复 栈和堆理解问题 https stackoverflow com questions 2559271 stack heap understanding question 有人告诉我使用 var 真的很慢
  • 如何将可观察的响应投射到本地对象

    在当前的 Angular 6 应用程序中 有一个订阅 observable 来自 RESTful 服务的响应 this activatedRoute data subscribe bag gt console log bag this ba
  • Android发送大量短信

    我有一个应用程序 它会向中央服务器发送大量短信 每个用户每天可能会发送约 300 个文本 SMS 消息被用作网络层 因为 SMS 几乎无处不在 而移动互联网却不然 该应用程序旨在供许多移动互联网尚未普及的第三世界国家使用 当我达到 100
  • 最大限度地降低重新分配人员的成本

    我有属于不同类别的个人 他们位于不同的地方 区 这些人口预计将从population值低于 到demand value population and demand by category and zone lt tibble tribble
  • jQuery 选择更改显示/隐藏 div 事件

    我正在尝试创建一个表单 当选择选择元素 parcel 时 它将显示一个 div 但当未选择它时 我想隐藏该 div 这是我目前的标记 到目前为止 这是我的 HTML div class row Type div
  • 从 AOSP 编译电子邮件应用程序

    我想向 AOSP 电子邮件应用程序添加一些不再受支持的功能 所以我克隆了存储库here https github com android platform packages apps email 这是一个 Eclipse 项目 并将其迁移到
  • C++:防止多个函数同时执行

    我问这个问题是因为mutex我发现文档处理单个函数 我认为我的情况很常见 我的问题是以下代码是否不仅会阻止func1 OR func2 并行执行多次 但它是否也会阻止func1 AND func2 同时执行 include
  • 在 UITableView 标头中包含的 UIImageView 上设置accessibilityLabel

    我有一个UITableView我内置的loadView 我在做的事情之一loadView是创建一个UIView充当表头并填充UIImageView进去 图像视图包含作为风格化标题的图像 因此我想为 VoiceOver 用户添加辅助功能标签
  • 不要让 IE 选择并复制使用 jQuery .hide() 隐藏的表行

    我在数据表顶部有一个 jQuery 即时搜索栏 所有符合搜索条件的记录都将可见 row show 其余的都是隐藏的 row hide Problem 搜索后 我使用鼠标从搜索结果中选择 复制行列表并将其粘贴到 Excel 中 隐藏 记录也会
  • 使用 CSS 分布内联元素

    有没有一种简单的方法可以使用 CSS 在父块容器中分发内联元素 将边距设置为自动不起作用 因为内联元素之间的边距设置为 0 而且我不想弄乱百分比 因为内容是动态的 特别是 我在段落 p 中有几个锚元素 a 跨越其容器的 80 我正在寻找一种
  • 如何获取TextView的行距?

    有没有办法获得行间距TextView in Android 我尝试寻找fontMetrics of the Paint of the TextView并这样做 tv1 getPaint getFontMetrics pfm float fo
  • 如何在Android中加载大图像并避免内存不足错误?

    我正在开发一个使用大图像的应用程序 1390 870 150kb 50kb 我在点击触发器 ImageView 时添加图像 在某个时刻我遇到内存不足错误 java lang OutOfMemoryError E AndroidRuntime
  • 何时应该处理 ManualResetEvent?

    我正在使用一个使用 ManualResetEvent 同步线程的应用程序 FxCop 让我处理掉这些物品 我发现以下讨论告诉我同样的事情 我需要 Dispose 或 Close EventWaitHandle 吗 https stackov
  • 在指令链接功能中动态添加 ng-click

    我正在尝试创建一个指令 允许将元素定义为可点击或不可点击 并且定义如下
  • 我无法使用 C# 代码连接到 SQL Server 数据库 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图创建注册表单 但是当我运行我的项目时收到此错误消息 抛出异常 System Data dll 中的 System
  • 启动时在 iOS 中启动位置感知后台服务

    应用程序可以注册重大位置变化 推荐 重大变化的定位服务提供了 低功耗方式接收位置数据 强烈推荐用于 不需要高精度位置数据的应用 有了这个 服务 仅当用户位置时才会生成位置更新 发生显着变化 因此 它非常适合社交应用或 为用户提供非关键的 位
  • 关于面向块的步骤与现实的 Spring Batch 文档?

    On the 文档 http docs spring io spring batch reference html configureStep htmlSpring Batch 的配置步骤清晰地描述了读取过程和写入是如何执行的 read p