我有自己的数据库任务的应用程序,我想在春季云数据流运行。
我的问题是,新加坡民防部队将覆盖与新加坡民防部队的数据源配置任务的数据源配置。 (这两个数据库是甲骨文数据块。)
我的任务应该写不同的数据库(但我也想知道其在新加坡民防部队数据库状态)。
这怎么可能来配置我的任务连接到自己的数据库,以及新加坡民防部队到的数据库?
我有自己的数据库任务的应用程序,我想在春季云数据流运行。
我的问题是,新加坡民防部队将覆盖与新加坡民防部队的数据源配置任务的数据源配置。 (这两个数据库是甲骨文数据块。)
我的任务应该写不同的数据库(但我也想知道其在新加坡民防部队数据库状态)。
这怎么可能来配置我的任务连接到自己的数据库,以及新加坡民防部队到的数据库?
我找到了解决办法。
我所定义的配置类以下以此为例两个数据源(一个用于JPA,一个用于SCDF): https://www.baeldung.com/spring-data-jpa-multiple-databases
然而,这是不够的,因为数据流服务器只接受一个默认的数据源。 为了克服这个问题,需要延长DefaultTaskConfigurer
并设置在构造数据流服务器的数据源。
@Component
public class GeneratorTaskConfigurer extends DefaultTaskConfigurer {
public GeneratorTaskConfigurer(@Qualifier("dataflowDataSource") DataSource dataSource) {
super(dataSource);
}
}
你可以有这样的新加坡民防部队的数据源代码一个配置类
@Configuration
@Profile("cloud")
public class MySqlConfiguration {
@Bean
public Cloud cloud() {
return new CloudFactory().getCloud();
}
@Bean
@Primary
public DataSource dataSource() {
return cloud().getSingletonServiceConnector(DataSource.class, null);
}
@Bean
@Primary
public PlatformTransactionManager getTransactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public JobRepository jobRepositoryFactoryBean() throws Exception{
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource());
factory.setTransactionManager(getTransactionManager());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
@Primary
public DefaultTaskConfigurer defaultTaskConfigurer() {
return new DefaultTaskConfigurer(dataSource());
}
}
然后在您要写入数据库的一个单独的类的其他数据源配置。 请务必标注新加坡民防部队一个@Primary,否则你会得到多个数据源错误。
希望这可以帮助。