Несколько источников данных R2DBC с загрузкой Spring

Я хочу перенести свое приложение на WebFlux, но сложная часть заключается в том, что у меня есть bean-компонент, который подключается к 6 источникам данных с помощью такого механизма.

public class MultiRoutingDataSource extends AbstractRoutingDataSource {

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

Затем я создаю 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;
    }

и эти источники данных могут быть изменены во время выполнения. Эта мультимаршрутизация затем устанавливается в диспетчере сущностей.

Есть ли что-то подобное с WebFlux?

я нашел

public class MultiRoutingDataSource extends AbstractRoutingConnectionFactory {

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

Но как создавать bean-компоненты с подключениями и переключать их во время выполнения, как я делаю в Spring MVC?


person Bohdan Myslyvchuk    schedule 24.11.2020    source источник


Ответы (1)


Если вам нужно несколько фабрик соединений R2dbc в одном приложении, проверьте мой пример multi-r2dbc-connectionfactories.

Для поддержки нескольких арендаторов проверьте multi-tenancy-r2dbc.

person Hantsy    schedule 02.12.2020