【发布时间】:2018-03-23 13:02:02
【问题描述】:
我见过this (2010) 和this (SO, 2012),但仍然没有得到我需要的答案...
Spring Batch 中是否可以选择动态复合读取器/处理器/写入器?
这个想法是能够在运行时替换处理器,并且在多个处理器(AKA 复合处理器)的情况下,可以选择添加/删除/替换/更改处理器的顺序。如前所述,对于读者/作家也是如此。
我想到了类似从数据库中读取处理器列表(使用缓存?),并且可以更改项目(bean 的名称)。这有意义吗?
编辑 - 我为什么需要这个?
在某些情况下,我将处理器用作“过滤器”,可能会发生业务(客户端)可能会更改需求(是的,这很烦人)并要求在过滤器之间切换(更改优先级)。
其他用例是有多个读取器从不同的数据仓库获取数据,并且再次 - 客户端不时更改仓库(集成阶段),我不希望我的应用程序每次都重新启动.
当然,还有许多其他用例。 plus this.
谢谢
【问题讨论】:
-
这样做的目的是什么?通常批处理作业是静态的。也许 Spring Batch 不是正确的工具。如果您告诉我更多您的要求,我可以提供建议。
-
有些情况我使用处理器作为“过滤器”,可能会出现业务(客户端)可能会更改需求(是的,这很烦人)并要求在过滤器之间切换(更改优先级)。其他用例是让多个读取器从不同的数据仓库获取数据,并且再次 - 客户端不时更改仓库(集成阶段)。所以我不希望我的应用每次都重新启动。
-
但是您不需要更换处理器。但是你的处理器可以选择执行什么样的代码。并且还可以在阅读器中更改数据源
-
@simas_ch 所以你建议使用一个处理器来动态决定运行什么代码。那有什么区别呢?我们仍然面临同样的挑战......
-
为什么?您无法动态创建批处理作业,但如果您拥有可以动态处理所有内容的处理器。你甚至可以从数据库中读取代码。
标签: spring-batch