猿问

Spring Cloud Data Flow 忽略由 spring batch app 配置的数据源

我正在设置 Spring Cloud Data Flow 的一个实例。我运行了以下命令:


1. Run skipper server: java -jar spring-cloud-skipper-server-2.0.3.RELEASE.jar &

2. Run Dataflow server: java -jar spring-cloud-dataflow-server-2.1.2.RELEASE.jar \

    --spring.datasource.url=jdbc:postgresql://10.136.66.44:8080/springclouddataflow \

    --spring.datasource.username=springclouddataflow \

    --spring.datasource.password=123456 \

    --spring.datasource.driver-class-name=org.postgresql.Driver \

    --server.port=80 &

在第二步中,我使用的是 postgres 数据库,而不是默认的 h2。


我已经使用 spring batch 开发了一个 spring boot 作业以部署在这个平台中。该作业使用两个数据源:用于 Spring 的 springclouddataflow 和用于我的业务逻辑的任务元数据和 billrun。当我在本地运行该应用程序时,它会按预期将元数据保存在 springclouddataflow 中,并将我的业务数据保存在 billrun 中。问题是当我尝试在 Spring Cloud Dataflow 中执行 de job 时。该平台忽略了我配置的业务逻辑数据库,只使用了应该只存储元数据的 springclouddataflow 数据库。


我在官方文档中搜索过。它解释了如何使用不同的数据库进行元数据存储以及如何在应用程序中配置多个数据库。我已按照说明进行操作但没有成功。


application.properties


logging.level.org.springframework.cloud.task=debug

spring.datasource.initialization-mode=always

spring.batch.initialize-schema=always

spring.application.name=Bill Run

spring.datasource.jdbc-url=jdbc:postgresql://10.136.66.44:8080/springclouddataflow?useSSL=false

spring.datasource.username=springclouddataflow

spring.datasource.password=123456

spring.datasource.driver-class-name=org.postgresql.Driver

app.datasource.jdbc-url=jdbc:postgresql://10.136.66.44:8080/billrun?useSSL=false

app.datasource.username=springclouddataflow

app.datasource.password=123456

app.datasource.driver-class-name=org.postgresql.Driver


数据源配置


@Configuration

public class DatasourceConfiguration {

    @Bean(name = "appDatasource")

    @ConfigurationProperties(prefix = "app.datasource")

    public DataSource sourceDataSource() {

        return DataSourceBuilder.create().build();

    }


 

我试过将数据库属性作为参数传递给任务:

当我查看数据源时,只有数据保存在 springclouddataflow 中。如何告诉 spring cloud 数据流使用我的应用程序数据源(billrun)?



精慕HU
浏览 129回答 2
2回答

眼眸繁星

看起来您正在自定义 Spring Cloud Data Flow 服务器以使用我认为不需要的应用程序数据源。您可以像上面发布的那样启动您的 SCDF 服务器:1. Run skipper server: java -jar spring-cloud-skipper-server-2.0.3.RELEASE.jar & 2. Run Dataflow server: java -jar spring-cloud-dataflow-server-2.1.2.RELEASE.jar \     --spring.datasource.url=jdbc:postgresql://10.136.66.44:8080/springclouddataflow \     --spring.datasource.username=springclouddataflow \     --spring.datasource.password=123456 \     --spring.datasource.driver-class-name=org.postgresql.Driver \     --server.port=80 &并且,让您的 Spring 批处理应用程序将其数据源属性作为 Spring Boot 属性传递,而不是像上面那样使用自定义数据源配置。

米琪卡哇伊

只是你尝试在你的应用程序中添加动态数据源,然后你在需要的地方自动连接你的动态数据源@Configurationpublic class DataSourceConfig {    @Bean(name = "testingDataSource")        @ConfigurationProperties(prefix = "testing.datasource")     public DataSource testDataSource() {         return DataSourceBuilder.create().build();     }            @Bean(name = "testingJdbcTemplate")     public JdbcTemplate testJdbcTemplate(@Qualifier("testingDataSource") DataSource dsMySQL) {        return new JdbcTemplate(dsMySQL);    }    }测试:数据源:driverClassName:'com.mysql.cj.jdbc.Driver' jdbc-url:'jdbc:mysql://localhost/dbName' 用户名:'uname' 密码:'passwordcd'
随时随地看视频慕课网APP

相关分类

Java
我要回答