我有以下数据源:
@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),我就能够做到,但是我不知道是否有更干净的方法来做到这一点。
谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!