Hikari - Spring Boot игнорирует свойства hikari - PullRequest
0 голосов
/ 27 февраля 2019

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

Я сконфигурировал два моих источника данных в моем файле application.properties;

spring.datasource.url=jdbc:sqlserver://server;databaseName=ProductionMetrics
spring.datasource.username=ProductionMeusernametricsUser
spring.datasource.password=password
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.hikari.maximum-pool-size=20

# Products
trwbi.datasource.url=jdbc:sqlserver://server;databaseName=TRWBI
trwbi.datasource.username=username
trwbi.datasource.password=password
trwbi.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
trwbi.datasource.hikari.maximum-pool-size=20

Затем я настраиваю два источника данных следующим образом:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "defaultEntityManagerFactory",
        transactionManagerRef = "defaultTransactionManager",
        basePackages = {
                "com.domain.visualisation.shared.repository"
        }
)
public class DefaultDbConfig {

    @Primary
    @Bean(name = "defaultDataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource defaultDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "defaultEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean
    entityManagerFactory(
            EntityManagerFactoryBuilder builder,
            @Qualifier("defaultDataSource") DataSource dataSource
    ) {
        return builder
                .dataSource(dataSource)
                .packages("com.domain.visualisation.shared.entities")
                .persistenceUnit("default")
                .build();
    }

    @Primary
    @Bean(name = "defaultTransactionManager")
    public PlatformTransactionManager defaultTransactionManager(
            @Qualifier("defaultEntityManagerFactory") EntityManagerFactory defaultEntityManagerFactory
    ) {
        return new JpaTransactionManager(defaultEntityManagerFactory);
    }
}

Когда я включаю отладку для Hikari, я вижу, что значение MaximumPoolSize по-прежнему равно 10, а не значение20, что я определил.Я пытался применить другие свойства, такие как порог обнаружения утечки, имя пула и время простоя, но ни одно из них не применяется.

Почему они не применяются?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

В случае нескольких источников данных и потому, что вы используете DataSourceBuilder, работает следующее:

spring.datasource.maximum-pool-size=20
trwbi.datasource.maximum-pool-size=20

Также в вашем случае я бы рекомендовал отключить автоконфигурацию:

@SpringBootApplication(scanBasePackages = {...},
        exclude = {DataSourceAutoConfiguration.class} )
@EnableSwagger2
public class Application {
....

Если выне используйте компоновщик, но используйте автоконфигурацию, затем используйте

spring.datasource.hikari.minimumIdle=1
spring.datasource.hikari.maximum-pool-size=3
0 голосов
/ 27 февраля 2019

Вы должны использовать имя свойства MaximumPoolSize

spring.datasource.hikari.maximumPoolSize=20

MaximumPoolSize Это свойство контролирует максимальный размер, который разрешен для пула, включая обапростаивающие и используемые соединения.

...