从流应用程序启动DSL构建的组合任务

时间:2017-11-12 15:04:03

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

我见过的每个示例(task-launcher接收器和triggertask源)都显示了如何启动 uri 属性定义的任务。 我的任务定义如下所示:

sampleTask  <t2: timestamp || t1: timestamp> 
sampleTask-t1   timestamp   
sampleTask-t2   timestamp   
sampleTaskRunner    composed-task-runner --graph=sampleTask

我的问题是如何从流应用程序启动由DSL定义的组合任务运行器(sampleTaskRunner)。

由于

更新

我最终得到了以下使用SCDF REST API触发任务的解决方案:

composedTask定义:

<timestamp || mySampleTask>

流定义:

http | httpclient | log

部署属性:

app.http.port=81
app.httpclient.body=name=composedTask&arguments=--increment-instance-enabled=true
app.httpclient.http-method=POST
app.httpclient.url=http://localhost:9393/tasks/executions
app.httpclient.headers-expression={'Content-Type':'application/x-www-form-urlencoded'}

虽然很容易实现http sink组件,但如果流应用程序启动程序将提供一个开箱即用的组件,那将会很棒。

我的另一个问题是在分布式环境中部署时发现SCDF REST URL。

1 个答案:

答案 0 :(得分:0)

这里是SCDF的一个研发团队成员(Glenn Renfro)的快速选择。

  

stream create foozer --definition&#34; trigger --fixed-delay = 5 | tasklaunchrequest-transform --uri = maven://org.springframework.cloud.task.app:composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT --command-line-arguments = &#39; - graph = sampleTask-t1 || sampleTask-t2 --increment-instance-enabled = true --spring.datasource.url = jdbc:mariadb:// localhost:3306 / test --spring.datasource.username = root --spring。 datasource.password = password --spring.datasource.driverClassName = org.mariadb.jdbc.Driver&#39; |任务启动本地&#34; --deploy

foozer流定义

1)&#34;触发&#34;源恰好每5秒触发一次上游事件

2)&#34; tasklaunchrequest-transform&#34;处理器需要一些参数;更具体地说,它使用&#34; composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT&#34;发布组合任务图(即sampleTask-t1||sampleTask-t2

3)注意--increment-instance-enabled。这是CTR应用程序recently added,这提供了以重复节奏重新启动撰写任务的能力

4)由于CTR和SCDF必须share the same database,我们还将数据源属性作为命令行参数传递。 (SCDF服务器已使用相同的数据源凭据启动)

希望这有帮助。

最后,我们将通过以下内容向参考指南添加一个示例:spring-cloud/spring-cloud-dataflow#1780