带有多租户的Spring Batch

Mallikarjun

我们如何定义春季批处理作业以针对多个租户运行?

我已设置为每天晚上针对当前一个数据库模式按顺序运行一系列作业。当前所有作业都从某个位置读取文件并插入到数据库中。批处理配置非常基本,其中定义了数据源,事务管理器并将其映射到作业库。我的工作将指向此存储库和事务管理器。另外,我目前正在将批处理元数据信息保留在数据库中。

我的新要求是能够对多个租户运行相同的作业(按顺序执行)。每个租户数据可以位于同一数据库服务器中,但可以位于不同的架构甚至不同的数据库服务器中。我的问题是

1)我们是否将所有租户的批次特定元数据信息存储在一个公共数据库中,或者每个租户数据库都应该有自己的批处理元数据信息?

2)我的理解是,我们需要每个租户一个数据源,以便该租户特定的作业将有权访问数据库以存储从文件读取的数据。在为该承租人执行作业时,spring batch存储库是否也应指向当前数据源?

3)我们计划并行启动所有租户[职位],这意味着所有租户都可以同时运行JOB1。目前,我仍然不确定当这些租户运行且每个租户关联到不同的数据源时如何管理作业库,数据源,事务管理。

4)在我的头上,我想做的就是为每个租户复制我现有的配置,并拥有自己的工作仓库,指向租户特定的数据源和事务管理器。如果没有其他方法可以动态地定义相同的对象而不进行复制,这将是我要实现的最后一件事。

如果有任何机构解决或对解决方案有任何想法,请分享。一个示例配置应该会有所帮助。

桑迪普B

我参与了一个SaaS应用程序的构建,在该应用程序中您需要执行类似但并非完全使用Spring Batch的操作。

您的主要想法是:

一种。定义一个主数据库,您将在其中存储所有配置特定的数据,假设您有一个表,该表映射了您的租户名称,信息和数据源配置。

b。启动您的应用程序并读取此数据源,并在服务器端维护本地缓存,并使用key作为您的租户名称,并使用值作为租户信息(数据源等)。

C。与您一起维护本地线程,例如:

public class TenantThreadLocalContext
{
    public static final ThreadLocal<TenantInformation> threadLocal = new ThreadLocal<TenantInformation>();

    public static void set(TenantInformation tenantInformation)
    {
        threadLocal.set(tenantInformation);
    }

    public static void unset()
    {
        threadLocal.remove();
    }

    public static TenantInformation get()
    {
        return threadLocal.get();
    }

}

d。每当您启动任何线程来开始处理(批处理)时,请将该本地线程与租户信息一起设置,以便每个线程都知道该线程与哪个租户相关联。

e。最终,在数据库处理时,您可以看到线程具有什么数据源,并且可以使用该数据源进行连接。

如果您使用的是Hibernate,那么您很幸运,因为Hibernate 4已为您完​​成了所有这些工作。参考:this如果您在休眠配置等方面需要帮助,那么也许我也可以为您提供帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有多租户的Spring Batch

来自分类Dev

带有SearchKick的多租户Rails应用

来自分类Dev

带有Spring Batch的Json Array读取器文件

来自分类Dev

带有Spring Batch的Json Array读取器文件

来自分类Dev

带有Spring Cloud AWS S3的Spring Batch为欧盟存储桶返回301

来自分类Dev

带有MongoDB的Django多数据库多租户

来自分类Dev

带有Guice Custom Scope和Jersey的多租户

来自分类Dev

带有代码优先EF6的多租户

来自分类Dev

带有Postgresql和Unicorn的多租户Rails应用

来自分类Dev

带有代码优先EF6的多租户

来自分类Dev

带有弹簧数据弹性搜索的多租户

来自分类Dev

带有Postgresql和Unicorn的多租户Rails应用

来自分类Dev

带有MongoDB的Django多数据库多租户

来自分类Dev

Spring Batch未知状态

来自分类Dev

Spring Batch饱和内存

来自分类Dev

Spring Batch JpaPagingItemReader挂起

来自分类Dev

Spring Batch配置异常

来自分类Dev

Spring Batch中的JobParameters

来自分类Dev

Spring Batch AmqpItemReader确认

来自分类Dev

测试Spring Batch SkipListener

来自分类Dev

Spring Batch JpaPagingItemReader挂起

来自分类Dev

Spring Batch - 异常处理

来自分类Dev

JobRepository中检测到的现有事务-带有Grails插件的Spring Batch

来自分类Dev

具有Java配置的Spring Batch

来自分类Dev

Spring Batch:有这种模式吗?

来自分类Dev

具有多租户休眠的Spring-Data JPA

来自分类Dev

Spring Logback多租户实现,每个租户都具有自定义配置

来自分类Dev

Spring Batch和Spring TaskScheduler

来自分类常见问题

Spring Batch JobParameters值null