当定义了多个数据源时出现异常 'java.lang.IllegalStateException:Expected one datasource and found 2'

Getting Exception 'java.lang.IllegalStateException:Expected one datasource and found 2' when more than one datasource defined

当我在 spring 云任务应用程序中定义多个数据源时,它会引发异常。这就是我定义数据源的方式

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

@Bean(name="datasource2")
@ConfigurationProperties(prefix="spring.datasource1")
public javax.sql.DataSource primaryDataSource1() {
    return  DataSourceBuilder.create().build();
}

@Bean
public TaskConfigurer taskConfigurer() {
    return new DefaultTaskConfigurer(primaryDataSource());
}

我看到了像上面那样放置 @Primary 定义 TaskConfigurer 的建议,但是其中 none working.Has 有人遇到过这种问题吗?

谢谢, 尼尔

您将需要覆盖侦听器。它与其他围绕任务的自动配置一样,在您定义了多个数据源时不知道要使用哪个数据源。我创建了一个问题来在未来的版本中解决这个问题:https://github.com/spring-cloud/spring-cloud-task/issues/252

您需要覆盖 DefaultTaskConfigurer

@Configuration
public class BatchConfigurer extends DefaultTaskConfigurer
{

    public BatchConfigurer(@Qualifier("batchDataSource") DataSource dataSource) 
    {
        super(dataSource);
    }

}