0

我见过的每个示例(task-launchersink 和triggertasksource )都展示了如何启动由uri属性定义的任务。我的任务定义如下所示:

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

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

谢谢

更新

我最终得到了以下使用 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。

4

1 回答 1

0

以下是 SCDF 的一位研发团队成员 (Glenn Renfro) 的简短介绍。

流创建 foozer --definition "触发器 --fixed-delay=5 | tasklaunchrequest-transform --uri=maven://org.springframework.cloud.task.app:composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT --命令行参数= '--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' | task-launcher-local" --deploy

foozer流定义中,

1)“触发器”源恰好每 5 秒触发一次上游事件

2)“tasklaunchrequest-transform”处理器需要几个参数;更具体地说,它使用“composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT”来启动一个组合任务图(即sampleTask-t1||sampleTask-t2

3)注意--increment-instance-enabled。这是最近添加到 CTR 应用程序的,它提供了以重复的节奏重新启动组合任务的能力

4) 由于 CTR 和 SCDF 必须共享同一个数据库,我们还将数据源属性作为命令行参数传递。(SCDF-server 已经使用相同的数据源凭据启动)

希望这可以帮助。

最后,我们将通过以下方式将示例添加到参考指南中:spring-cloud/spring-cloud-dataflow#1780

于 2017-11-13T17:33:46.600 回答