为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

精慕HU 2023-04-26 17:11:01
我正在设置 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.propertieslogging.level.org.springframework.cloud.task=debugspring.datasource.initialization-mode=alwaysspring.batch.initialize-schema=alwaysspring.application.name=Bill Runspring.datasource.jdbc-url=jdbc:postgresql://10.136.66.44:8080/springclouddataflow?useSSL=falsespring.datasource.username=springclouddataflowspring.datasource.password=123456spring.datasource.driver-class-name=org.postgresql.Driverapp.datasource.jdbc-url=jdbc:postgresql://10.136.66.44:8080/billrun?useSSL=falseapp.datasource.username=springclouddataflowapp.datasource.password=123456app.datasource.driver-class-name=org.postgresql.Driver数据源配置@Configurationpublic class DatasourceConfiguration {    @Bean(name = "appDatasource")    @ConfigurationProperties(prefix = "app.datasource")    public DataSource sourceDataSource() {        return DataSourceBuilder.create().build();    } 我试过将数据库属性作为参数传递给任务:当我查看数据源时,只有数据保存在 springclouddataflow 中。如何告诉 spring cloud 数据流使用我的应用程序数据源(billrun)?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

看起来您正在自定义 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 属性传递,而不是像上面那样使用自定义数据源配置。


查看完整回答
反对 回复 2023-04-26
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

只是你尝试在你的应用程序中添加动态数据源,然后你在需要的地方自动连接你的动态数据源


@Configuration

public 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'


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信