使用Spring Cloud数据流注册自定义Spring Cloud任务

时间:2018-06-18 16:26:25

标签: spring-cloud-dataflow spring-cloud-task

我开始使用Spring Cloud Data Flow,并希望实现一个我想要使用的简单Spring Cloud任务。

我从文档中创建了hello world example。当我在我的IDE中运行它时它执行没有任何问题并打印'hello world'。它使用以下JDBC连接:

  

o.s.j.datasource.SimpleDriverDataSource:创建新的JDBC驱动程序连接到[jdbc:h2:mem:testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = false]

我使用dockerized Local Spring Data Flow Server,它使用以下JDBC连接作为其元数据:

  

o.s.c.d.s.config.web.WebConfiguration:使用URL启动H2服务器:jdbc:h2:tcp:// localhost:19092 / mem:dataflow

当我将任务部署到服务器并启动它时,我得到以下异常:

  

org.springframework.context.ApplicationContextException:无法启动bean'taskLifecycleListener';嵌套异常是java.lang.IllegalArgumentException:无效的TaskExecution,找不到ID 1

这是因为Task和服务器使用不同的H2数据库。我莫名其妙地无法覆盖任务的数据库配置。我在类路径中使用H2,并使用以下application.yml配置来匹配服务器:

spring:
  datasource:
      url: jdbc:h2:tcp://localhost:19092/mem:dataflow
      username: sa
      password:
      driver-class-name: org.h2.Driver

永远不会被应用。它始终使用预配置的jdbc:h2:mem:testdb - 连接。我怎么能让它运行?

1 个答案:

答案 0 :(得分:1)

此异常表明任务未连接到数据流正在使用的数据存储。显然您正在使用Spring Cloud Data Flow的默认数据库。
我邀请您为此:

  • 在任务的pom.xml中添加以下依赖项:

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
    
  • 如果前面的提示不起作用。在Spring Boot的1.5.14版本和上一步中使用spring initailizr

  • 如果仍然无法运行,请尝试override the database configuration of Spring cloud DataFlow +在任务的pom.xml中添加相应的依赖项

我希望它将对您有帮助