Размер пула подключений для загрузки пружины с пользовательским источником данныхJAVA

Программисты JAVA общаются здесь
Anonymous
Размер пула подключений для загрузки пружины с пользовательским источником данных

Сообщение Anonymous »

У меня есть несколько приложений Spring Boot 3.4.4, подключающиеся к различным базам данных. В основном я использую конфигурацию дата данных по умолчанию в приложении.

Код: Выделить всё

spring:
datasource:
hikari:
maximum-pool-size: 10
idle-timeout: 20000
minimum-idle: 1
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://ip:port/dbname
username: user1
password: password1
< /code>
Это работает так же, как и ожидалось при использовании дата Spring по умолчанию. Однако для некоторых приложений мне нужен доступ к нескольким базам данных, и это не работает. В таких случаях я использую конфигурацию DataSource Spring Spring Spring YAML (так же, как указано выше) для одного данных, а также другую аналогичную структуру YAML для другого данных, например: < /p>
spring:
datasource:
hikari:
maximum-pool-size: 10
idle-timeout: 20000
minimum-idle: 1
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://ip:port/dbname
username: user1
password: password1

datasource2:
hikari:
maximum-pool-size: 10
idle-timeout: 20000
minimum-idle: 1
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://ip:port/dbname2
username: user2
password: password2
< /code>
Я инициализации их из Java с помощью пользовательского класса: < /p>
@Configuration
@EnableJpaRepositories(
basePackages = {"my.packages.repository.datasource1"},
entityManagerFactoryRef = "myEntityManagerFactory",
transactionManagerRef = "myTransactionManager"
)
@EnableTransactionManagement
@RequiredArgsConstructor
public class MyDbConfig {

@Primary
@Bean("myDataSourceProperties")
@ConfigurationProperties("spring.datasource")
DataSourceProperties myDataSourceProperties() {
return new DataSourceProperties();
}

@Primary
@Bean(name = "myDataSource")
DataSource myDataSource(@Qualifier("myDataSourceProperties") DataSourceProperties myDataSourceProperties) {
return myDataSourceProperties.initializeDataSourceBuilder().build();
}

@Primary
@Bean(name = "myEntityManagerFactory")
LocalContainerEntityManagerFactoryBean myEntityManagerFactory(
final EntityManagerFactoryBuilder builder,
@Qualifier("myDataSource") DataSource dataSource,
JpaProperties jpaProperties) {
return builder.dataSource(dataSource)
.packages("my.packages.domain.datasource1")
.jta(false)
.persistenceUnit("my-datasource1")
.properties(jpaProperties.getProperties())
.properties(Map.of(
"hibernate.physical_naming_strategy", "org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy",
"hibernate.implicit_naming_strategy", "org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy",
"hibernate.id.new_generator_mappings", "true",
"hibernate.transaction.jta.platform", "org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform"
))
.build();
}

@Primary
@Bean(name = "myTransactionManager")
PlatformTransactionManager myTransactionManager(@Qualifier("myEntityManagerFactory")
EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
< /code>
У меня есть несколько версий вышеуказанного класса, по одному для каждого данных. Я разделяю свои классы репозитория и сущности на разные пакеты для каждого данных, а затем назначаю соответствующий пакет для каждого определения данных. Он работает правильно, но продолжает открывать 10 подключений по умолчанию, не уважая настройку минимального IDLE 1 из конфигурации. По умолчанию для Hikaricp состоит в том, что минимум такой же, как и максимум, поэтому, я полагаю. Мне нужна помощь для этих пользовательских данных, и я не нашел ее до сих пор.  < /P>
Это соответствующие журналы, которые я получаю при запуске приложения: < /p>
[           main] c.z.h.HikariDataSource                   : HikariPool-1 - Starting...
[           main] c.z.h.p.HikariPool                       : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@20a9fb01
[           main] c.z.h.HikariDataSource                   : HikariPool-1 - Start completed.
[           main] o.h.j.i.u.LogHelper                      : HHH000204: Processing PersistenceUnitInfo [name: my-datasource1]
[           main] o.h.Version                              : HHH000412: Hibernate ORM core version 6.6.11.Final
[           main] o.h.c.i.RegionFactoryInitiator           : HHH000026: Second-level cache disabled
[           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port 8080 (http)
[           main] o.a.c.c.StandardService                  : Starting service [Tomcat]
[           main] o.a.c.c.StandardEngine                   : Starting Servlet engine: [Apache Tomcat/10.1.39]
[           main] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
[           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 19839 ms
[           main] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
[           main] o.h.o.c.pooling                          : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 17.0
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
и, конечно же, аналогичный для Hikaripool-2 для другого данных.

Подробнее здесь: https://stackoverflow.com/questions/796 ... datasource

Вернуться в «JAVA»