Настройка задачи потока данных Spring Cloud с собственной базой данных - PullRequest
0 голосов
/ 07 марта 2019

У меня есть приложение задачи с собственной базой данных, которое я хотел бы запустить в Spring Cloud Data Flow.

Моя проблема заключается в том, что SCDF перезаписывает конфигурацию источника данных в задаче с помощью конфигурации источника данных для SCDF.(Обе базы данных являются базами данных Oracle.)

Моя задача должна выполнять запись в другую базу данных (но я также хочу узнать ее состояние в базе данных SCDF).

Как можно настроить мою задачуподключиться к собственной базе данных, а также к базе данных SCDF?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

У вас может быть один класс конфигурации с кодом источника данных SCDF, подобный этому

@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());
}
}

И затем ваша другая конфигурация источника данных в отдельном классе для базы данных, в которую вы хотите записать.Убедитесь, что вы отметили SCDF один @Primary, в противном случае вы получите многократную ошибку источника данных.

Надеюсь, это поможет.

0 голосов
/ 08 марта 2019

Я нашел решение.

Я определил оба источника данных в классе конфигурации (один для 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);
    }
}
...