0

阅读本文档时,似乎我们可以编写一个微服务,@EnableTask它有一个源,其发出的消息被记录为一个执行步骤spring-cloud-task

我想对此声明进行一些澄清,以便在没有以下情况下实现这一目标spring-cloud-dataflow

  • 这是否意味着如果我们有一个Source带有 an 的 bean InboundChannelAdapter,我们不需要声明 a CommandLineRunner
  • 根据定义,一项任务预计会发出一次数据,如何通过Source定期轮询来重现这种行为?
  • 我试图在spring-boot应用程序中混合一些配置@EnableTask和 aAggregateApplicationBuilder以直接将我连接Source到 aSink而无需利用Kafkaor RabbitMQ,但它似乎spring-cloud-task需要一个活页夹。有没有办法跳过它?

谢谢

4

1 回答 1

0

今天可用的是侦听任务的生命周期事件并将它们发布到命名(可覆盖)通道目标以进行下游分析/处理的能力。这只是通过在类路径中具有特定的 Spring Cloud Stream 的绑定器实现而简单地自动化。

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

您似乎正在尝试在 Boot 应用程序中混合 Spring Cloud Stream (SCSt) 和 Spring Cloud Task (SCT) 注释。这不是它的预期用途。如果您还没有,请查看此示例以获得一个想法。

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

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

如果您要在 SCDF 之外执行此操作,您仍然需要自行运行triggertask并设置正确的 env-var,因此 Stream + Task 应用程序通过公共通道目标连接。

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

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

于 2017-04-05T14:02:30.250 回答