【问题标题】:Spring Batch: dynamic composite reader/processor/writerSpring Batch:动态复合读取器/处理器/写入器
【发布时间】:2018-03-23 13:02:02
【问题描述】:

我见过this (2010)this (SO, 2012),但仍然没有得到我需要的答案...

Spring Batch 中是否可以选择动态复合读取器/处理器/写入器?

这个想法是能够在运行时替换处理器,并且在多个处理器(AKA 复合处理器)的情况下,可以选择添加/删除/替换/更改处理器的顺序。如前所述,对于读者/作家也是如此。

我想到了类似从数据库中读取处理器列表(使用缓存?),并且可以更改项目(bean 的名称)。这有意义吗?

编辑 - 我为什么需要这个?

在某些情况下,我将处理器用作“过滤器”,可能会发生业务(客户端)可能会更改需求(是的,这很烦人)并要求在过滤器之间切换(更改优先级)。
其他用例是有多个读取器从不同的数据仓库获取数据,并且再次 - 客户端不时更改仓库(集成阶段),我不希望我的应用程序每次都重新启动.
当然,还有许多其他用例。 plus this.

谢谢

【问题讨论】:

  • 这样做的目的是什么?通常批处理作业是静态的。也许 Spring Batch 不是正确的工具。如果您告诉我更多您的要求,我可以提供建议。
  • 有些情况我使用处理器作为“过滤器”,可能会出现业务(客户端)可能会更改需求(是的,这很烦人)并要求在过滤器之间切换(更改优先级)。其他用例是让多个读取器从不同的数据仓库获取数据,并且再次 - 客户端不时更改仓库(集成阶段)。所以我不希望我的应用每次都重新启动。
  • 但是您不需要更换处理器。但是你的处理器可以选择执行什么样的代码。并且还可以在阅读器中更改数据源
  • @simas_ch 所以你建议使用一个处理器来动态决定运行什么代码。那有什么区别呢?我们仍然面临同样的挑战......
  • 为什么?您无法动态创建批处理作业,但如果您拥有可以动态处理所有内容的处理器。你甚至可以从数据库中读取代码。

标签: spring-batch


【解决方案1】:

我已经开始着手这个项目了:

https://github.com/OhadR/spring-batch-dynamic-composite

实现了上述问题中的要求。如果有人想贡献 - 请随意!

【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2016-01-18
    相关资源
    最近更新 更多