Multithreading Spring AbstractRoutingDataSource后台线程
我们正在构建一个多租户服务器,每个租户有一个数据库/模式。 为此,我们使用Springs AbstractRoutingDataSource根据租户切换数据源 租户由servlet筛选器中url的子域确定。 此租户存储在本地线程中 在线程启动之前,所有这些都可以正常工作。 例如,当hibernate搜索重新索引时,它会启动许多线程Multithreading Spring AbstractRoutingDataSource后台线程,multithreading,spring,Multithreading,Spring,我们正在构建一个多租户服务器,每个租户有一个数据库/模式。 为此,我们使用Springs AbstractRoutingDataSource根据租户切换数据源 租户由servlet筛选器中url的子域确定。 此租户存储在本地线程中 在线程启动之前,所有这些都可以正常工作。 例如,当hibernate搜索重新索引时,它会启动许多线程 当其中一个线程尝试获取连接时,本地线程返回null,我无法确定租户。我使用存储租户的会话范围Springbean修复了它 请参阅示例我通过使用存储租户的会话范围Spr
当其中一个线程尝试获取连接时,本地线程返回null,我无法确定租户。我使用存储租户的会话范围Springbean修复了它
请参阅示例我通过使用存储租户的会话范围Springbean修复了它
有关示例,请参见。您可以将租户标识符存储在
InheritableThreadLocal
中。子线程将有权访问相同的ThreadLocal变量,因此将知道租户并使用相同的数据库。您可以将租户标识符存储在InheritableThreadLocal
中。子线程将有权访问相同的ThreadLocal变量,因此将知道租户并使用相同的数据库