案例是我在本地机器上启动了 Spring Cloud Data Flow Server 和 Shell 应用程序,它们都使用 H2 内存数据库来存储任务和作业定义。
当我部署使用 H2 作为数据库读取数据的应用程序时,它运行良好。
但是当我想部署和运行从本地postgresql数据库读取数据的应用程序时,它找不到它,然后又会使用H2。
我在我的 pom 中添加了 postgresql 依赖项,还在 application.properties 中配置了属性,它在我本地的 Intelij 中与 spring batch 一起工作得很好。
所以我的问题是,如何让我的应用程序在部署到 spring-cloud-data-flow-server 后仍然从 postgresql 读取数据?谢谢。
配置信息:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version
<spring.cloud.task.version>2.0.0.RELEASE</spring.cloud.task.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-task-core</artifactId>
<version>${spring.cloud.task.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-task-batch</artifactId>
<version>${spring.cloud.task.version}</version>
</dependency>
最佳答案
您可以控制哪些datasource
应该被配置到 SCDF、Tasks、Task-launcher,甚至 Composed Task Runner。 documentation for these options可能会有用。
但是,在您的情况下,听起来您有 2 个不同的数据库:一个用于 SCDF,另一个用于 SCDF 启动的任务,这应该是一个非常简单的设置,只要 datasource
两个引导应用程序上的属性均已正确配置。
可能是类路径中没有 Postgres 驱动程序,或者 datasource
属性配置不正确。查看 connection properties for the supported databases 的文档- 你可以仔细检查是否正确。
关于java - 部署在 spring-cloud-dataflow-server 中的服务如何连接到另一个数据库而不是数据流服务器使用的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53754825/