关于作为Spring云流源执行的任务的说明

时间:2017-04-04 16:38:24

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

在阅读this documentation时,似乎我们可以编写一个带有@EnableTask的微服务,其中有一个源,其发出的消息被spring-cloud-task记录为执行步骤。

我希望对此声明进行一些澄清,以便在没有spring-cloud-dataflow的情况下实现此目的:

  • 这是否意味着如果我们的Source bean有InboundChannelAdapter,我们不需要声明CommandLineRunner
  • 根据定义,任务需要一次发出数据,如何通过定期轮询Source来重现此行为?
  • 我尝试在spring-boot应用程序中混合使用@EnableTaskAggregateApplicationBuilder的一些配置,将Source直接连接到Sink,而无需利用KafkaRabbitMQ,但似乎spring-cloud-task需要一个活页夹。有没有办法跳过它?

由于

1 个答案:

答案 0 :(得分:0)

现在可用的是能够监听任务的生命周期事件并将其发布到命名(可覆盖的)通道目的地以进行下游分析/处理。只需在类路径中使用特定的Spring Cloud Stream绑定器实现即可实现自动化。

  

这是否意味着如果我们有一个带有InboundChannelAdapter的Source bean,我们不需要声明一个CommandLineRunner?

您似乎正在尝试在Boot应用中混合使用Spring Cloud Stream(SCSt)和Spring Cloud Task(SCT)注释。这不是打算如何使用它。如果您还没有,请参阅this sample以获取相关信息。

  

根据定义,任务应该发出一次数据,如何使用定期轮询的Source重现此行为?

任务运行“有限的时间段”,并且由应用程序中嵌入的业务逻辑运行多长时间来描述。任务还需要某种形式的触发器才能启动。您可以使用调度程序进行重复定时启动或通过流启动它。这是关于如何通过Spring Cloud Data Flow(SCDF)中的流启动它的write-up

如果你要在SCDF之外做,你仍然自己运行triggertask并设置正确的env-var,所以Stream + Task应用程序是通过公共频道目的地连接。

  

...但似乎spring-cloud-task需要一个活页夹。有没有办法跳过它?

SCSt和SCT之间的连接是通过spring-cloud-task-streamspring-cloud-stream-binder-<type-of-binder>依赖关系完成的,没有其他方法。