我们需要允许用户将巨大的目录导入应用程序。我们如何通过Spring批处理实现这一点,因为Job是Spring Batch中的单例。我们如何调整它以便我可以通过线程安全性多次调用相同的工作。我们可以使用同步处理,而不是寻找异步。感谢您的输入。
答案 0 :(得分:0)
即使作业配置是一个单例,每个作业实例也是由作业配置创建的,作为作业启动器的新对象,因此您应该没有并发问题。
答案 1 :(得分:0)
听起来好像会以不安全的方式对您的数据库进行多次更新。例如。如果你有一个表1第1行由Job1更新而另一个用户启动Job2那里不能保证你在第1行中得到什么值。我不会担心线程安全所以行级并发安全性。通常情况下,如果您只希望一次运行一次导入,那么解决方案就不像Spring,而是数据库特定的导入工具。
更新:
请参阅此SO答案,了解如何自定义Spring Batch以仅允许一个作业在时间运行。注意 - 这与线程安全无关。这不是Spring Batch的典型使用方式,这就是为什么它没有在其文档中列为正常用例的原因。