我们如何定义Spring Batch作业以针对多个租户运行?
我已经设置每晚按顺序运行一系列作业来针对一个数据库模式。当前,所有作业都从一个位置读取文件并插入到数据库中。批处理配置非常基本,其中我定义了数据源、事务管理器并将作业存储库映射到它。我的作业将指向此存储库和事务管理器。此外,我目前在数据库中持久化批处理元数据信息。
我的新要求是能够针对多个租户(按顺序执行的相同作业)运行这些作业。每个租户的数据可以存在于同一个数据库服务器中的不同模式或甚至不同的数据库服务器中。我的问题是:
1)我们是否应该将所有租户的批处理特定元数据信息存储在一个公共数据库中,还是每个租户数据库都应该有自己的元数据信息?
2)我的理解是,我们需要为每个租户提供一个数据源,以便针对该租户的作业可以访问数据库以存储从文件中读取的数据。当为该租户执行作业时,Spring Batch存储库是否也应该指向当前数据源?
3)我们计划同时启动所有租户[作业],这意味着JOB1可以同时为所有租户运行。此时,我仍然不确定在每个关联不同数据源的租户运行时如何管理作业存储库、数据源和事务管理器。
4)我想到的是为每个租户复制我的现有配置,使用自己的作业存储库指向特定于租户的数据源和事务管理器。如果没有其他动态定义相同内容的方法,这是我实施的最后一件事。
如果有人已经解决或有任何关于如何解决此问题的想法,请分享。示例配置应该有所帮助。
我已经设置每晚按顺序运行一系列作业来针对一个数据库模式。当前,所有作业都从一个位置读取文件并插入到数据库中。批处理配置非常基本,其中我定义了数据源、事务管理器并将作业存储库映射到它。我的作业将指向此存储库和事务管理器。此外,我目前在数据库中持久化批处理元数据信息。
我的新要求是能够针对多个租户(按顺序执行的相同作业)运行这些作业。每个租户的数据可以存在于同一个数据库服务器中的不同模式或甚至不同的数据库服务器中。我的问题是:
1)我们是否应该将所有租户的批处理特定元数据信息存储在一个公共数据库中,还是每个租户数据库都应该有自己的元数据信息?
2)我的理解是,我们需要为每个租户提供一个数据源,以便针对该租户的作业可以访问数据库以存储从文件中读取的数据。当为该租户执行作业时,Spring Batch存储库是否也应该指向当前数据源?
3)我们计划同时启动所有租户[作业],这意味着JOB1可以同时为所有租户运行。此时,我仍然不确定在每个关联不同数据源的租户运行时如何管理作业存储库、数据源和事务管理器。
4)我想到的是为每个租户复制我的现有配置,使用自己的作业存储库指向特定于租户的数据源和事务管理器。如果没有其他动态定义相同内容的方法,这是我实施的最后一件事。
如果有人已经解决或有任何关于如何解决此问题的想法,请分享。示例配置应该有所帮助。