Я пытаюсь создать приложение с весенней загрузкой (масштабируемое по своей природе) с Hibernate Multi-tenancy (база данных на каждого клиента), эта часть работает нормально.
Я запускаю это приложение в кластере, у меня возникают проблемы в сеансах HTTP (необходимо реплицировать сеансы HTTP через другие узлы). Для этого я попытался использовать Spring JDBC Session, но столкнулся с проблемами при настройке.
Я только что включил зависимость Spring Session в файл gradle и применил аннотацию @EnableJdbcHttpSession к моему файлу AppConfigurations.java.
Проблема, с которой я сталкиваюсь, заключается в том, что из-за ошибки некоторых компонентов требуется bean-компонент с именем 'dataSource', я тоже пытался объявить это.
Я веду карту источников данных, в которой хранится источник данных каждого арендатора.
После запуска приложения карта каким-то образом содержит только один источник данных, который является источником по умолчанию (для которого я создал бин с именем 'dataSource').
Я не уверен, что мне здесь не хватает, или даже Spring-Session поддерживает мультитенантность или нет.
Ниже приведен код, показывающий, как я создаю карту источника данных, которую я дополнительно инициализирую при запуске приложения:
@Bean(name = "dataSourceMap" )
public Map<String, DataSource> dataSourceMap() {
Map<String, DataSource> datasources = new HashMap<>();
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setPoolName("defaultDataSourcePool");
hikariConfig.setMaximumPoolSize(5);
hikariConfig.setMinimumIdle(5);
hikariConfig.setJdbcUrl(url);
hikariConfig.setUsername(username);
hikariConfig.setPassword(password);
datasources.put(defaultTenant, new HikariDataSource(hikariConfig));
return datasources;
}
Аналогичным образом я также определил бин, который возвращает источник данных по умолчанию.
Я ожидаю, что для каждого арендатора будут таблицы сеансов, в которых данные сеансов будут храниться отдельно.
Может кто-нибудь, пожалуйста, предложить выход из этого? или, может быть, если бы кто-то мог поделиться какой-то образцовой базой кода с такой интеграцией, это было бы здорово.