简体   繁体   English

使用 Spring Boot 的多个 R2DBC 数据源

[英]Multiple R2DBC datasource with Spring boot

I want to migrate my app to WebFlux, but the tricky part that I have bean which connects to 6 data sources by such mechanism我想将我的应用程序迁移到 WebFlux,但棘手的部分是我的 bean 通过这种机制连接到 6 个数据源

public class MultiRoutingDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        return //code which sets context for chosen db;
    }
}

Then I'm creating 6 data sources which is then managed by multiRoutingDataSource然后我创建 6 个数据源,然后由 multiRoutingDataSource 管理

@Bean(name = "multiRoutingDataSource")
    public DataSource multiRoutingDataSource() {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(ident, MyDataSourceBean());
        MultiRoutingDataSource multiRoutingDataSource = new MultiRoutingDataSource();
        multiRoutingDataSource.setTargetDataSources(targetDataSources);
        return multiRoutingDataSource;
    }

and this data sources could be changed in runtime.并且可以在运行时更改此数据源。 This multiRouting then set into entity manager.然后将此 multiRouting 设置为实体管理器。

Is there something similar with WebFlux? WebFlux 有类似的东西吗?

I found我发现

public class MultiRoutingDataSource extends AbstractRoutingConnectionFactory {

    @Override
    protected Mono<Object> determineCurrentLookupKey() {
        return null;
    }

But how to create beans with connections and switch them in runtime like I'm doing in Spring MVC?但是如何像我在 Spring MVC 中所做的那样创建带有连接的 bean 并在运行时切换它们?

If you want multi R2dbc connectionfactories at the same application, check my example multi-r2dbc-connectionfactories .如果您想在同一个应用程序中使用多个 R2dbc connectionfactories,请查看我的示例multi-r2dbc-connectionfactories

For multi-tenancy support, check multi-tenancy-r2dbc .对于多租户支持,请检查multi-tenancy-r2dbc

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM