1

我是学习 Spring 云任务和 SCDF 的新手,所以问这个。

我想根据一个事件执行我的 SCT(比如将一条消息发布到 Rabbit MQ),所以我认为它可以通过两种方式完成:

  1. 创建一个从 RabbitMQ 轮询消息并将数据发送到流的源,现在创建一个从流中读取数据的接收器,一旦数据到达接收器(来自源流),任务就会启动。

    create steam producer --definition "rabbitproducer | streamconsumer (This is @TaskEnabled)"
    

    不确定这是否可能?

  2. 其他方式可能是使用任务启动器。这里任务启动器将配置一个流,一个监听器将从 rabbitMQ 轮询消息。因此,当收到消息时,触发器将启动该过程,而 tasklauncher 将启动该任务。但是这里不确定我将如何将消息数据放入我的任务中?我是否必须将数据添加到 TaskLaunchRequest 中?

    create stream mystream --definition "rabbitmsgtrigger --uri:my task | joblauncher"
    
4

2 回答 2

1

已经支持通过上游事件启动任务,并且有几种方法 - 请查看参考指南和示例)以获取更多详细信息。

于 2016-09-19T17:49:58.713 回答
0

这是关于我的问题答案的完整解释。在这里,Sabby 在解决我的问题方面帮助了我很多。

问题:我无法使用 tasklauncher/task-sink 触发我的任务。在日志中,我也没有得到正确的详细信息,我什至不知道如何正确设置日志级别。

解决方案:在 Sabby 和 SCT 网站上提供的文档的帮助下,我可以解决这个问题并继续我的 POC 工作。下面是我做的详细步骤。

  1. 通过引用属性文件并将日志级别更改设置为,使用 postgresql 数据库启动我的 SCDF

    --logging.level.org.springframework.cloud=DEBUG
    --spring.config.location=file://scdf.properties
    
  2. 从 bitly 导入的应用程序。

    app import --uri [stream applications link][1]
    
  3. 已注册的任务接收器应用

    app register --name task-sink --type sink --uri file://tasksink-1.1.0.BUILD-SNAPSHOT.jar
    
  4. 创建流为:

    stream create mytasklaunchertest --definition "triggertask --triggertask.uri=https://my-archiva/myproject-scdf-task1/0.0.1-SNAPSHOT/myproject-scdf-task1-0.0.1-20160916.143611-1.jar --trigger.fixed-delay=5 | task-sink"
    
  5. 部署流:

    stream deploy foo --properties "app.triggertask.spring.rabbitmq.host=host,app.triggertask.spring.rabbitmq.username=user,app.triggertask.spring.rabbitmq.password=pass,app.triggertask.spring.rabbitmq.port=5672,app.triggertask.spring.rabbitmq.virtual-host=xxx"
    
于 2016-09-23T17:47:34.880 回答