从流应用程序启动由 DSL 构建的组合任务
Launching composed task built by DSL from stream application
我见过的每个示例(task-launcher
sink 和 triggertask
source )都显示了如何启动由 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。
以下是 SCDF 研发团队成员之一 (Glenn Renfro) 的简要介绍。
stream create foozer --definition "trigger --fixed-delay=5 | tasklaunchrequest-transform --uri=maven://org.springframework.cloud.task.app:composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT --command-line-arguments='--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) "trigger" source恰好每5s触发一个upstream事件
2) "tasklaunchrequest-transform" 处理器接受一些参数;更具体地说,它使用 "composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT" 启动组合任务图(即 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
我见过的每个示例(task-launcher
sink 和 triggertask
source )都显示了如何启动由 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。
以下是 SCDF 研发团队成员之一 (Glenn Renfro) 的简要介绍。
stream create foozer --definition "trigger --fixed-delay=5 | tasklaunchrequest-transform --uri=maven://org.springframework.cloud.task.app:composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT --command-line-arguments='--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) "trigger" source恰好每5s触发一个upstream事件
2) "tasklaunchrequest-transform" 处理器接受一些参数;更具体地说,它使用 "composedtaskrunner-task:1.1.0.BUILD-SNAPSHOT" 启动组合任务图(即 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