创建一个bean,直到创建了所有hikaricp连接

ndasle7k  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(153)

我有以下数据源:

@Bean("testDatasource")
public DataSource getDatasource() {
    HikariConfig config = new HikariConfig();

    SQLServerDataSource ds = new SQLServerDataSource();
    ds.setURL(appConfig.getUrl());
    ds.setUser(appConfig.getUsername());
    ds.setPassword(appConfig.getPassword()); 
    ds.setAuthentication("ActiveDirectoryPassword");

    config.setDriverClassName(appConfig.getDriverClass());
    config.setMaximumPoolSize(Integer.valueOf(appConfig.getMaximumPoolSize()));

    config.setDataSource(ds);
    return new HikariDataSource(config);
}

因此,需要创建50个连接,并且看起来ad身份验证正在减慢连接的创建速度,我有其他bean:

@Bean
    @DependsOn("testDatasource")
    public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactorySchedule(
            KafkaTemplate<String, String> template) {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        factory.setConcurrency(Integer.valueOf(appConfig.getConcurrency()));
        return factory;
    }

它由@kafkalistener使用,需要从kafka主题读取数据并将其插入需要连接池的数据库中。
我需要使kafka使用者的创建依赖于数据源,并且它是依赖的,我看到的问题是,数据源是创建的,但是连接似乎是异步创建的,我需要的是等待所有连接都创建,以允许创建kafka主题。
如果我在数据源上放置一个thread.sleep(x),我就能够做到,但是我不知道是否有更干净的方法来做到这一点。
谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题