Spring Batch docs说明了Map支持的作业存储库:
请注意,内存存储库是易失性的,因此不允许在JVM实例之间重新启动 . 它也不能保证同时启动具有相同参数的两个作业实例,并且不适合在多线程作业或本地分区步骤中使用 . 因此,只要您需要这些功能,就可以使用存储库的数据库版本 .
我想使用Map作业存储库,我不关心重新启动,防止并发作业执行等,但我关心能够使用多线程和本地分区 .
我的批处理应用程序有一些分区步骤,乍一看它似乎与Map支持的作业存储库运行良好 .
它说MapJobRepositoryFactoryBean不可能的原因是什么?查看Map DAO的实现,他们使用的是ConcurrentHashMap . 这不是线程安全的吗?
1 回答
我建议你遵循文档,而不是依赖于实现细节 . 即使 Map 是单独的线程安全的,更改中的竞争条件也可能涉及多个这些 Map .
您可以非常轻松地使用内存数据库 . 例