关于使用 spring 云流作为源执行的任务的说明

Clarification about task executed as a source with spring cloud stream

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

为了在没有 spring-cloud-dataflow:

的情况下实现这一点,我想对这个声明进行一些澄清

谢谢

今天可用的是侦听任务的生命周期事件并将它们发布到下游 analysis/processing 的命名(可覆盖)通道目的地的能力。这只是通过在类路径中具有特定的 Spring Cloud Stream 的活页夹实现来简单地自动化。

Does it mean that if we have a Source bean with an InboundChannelAdapter, we don't need to declare a CommandLineRunner?

您似乎试图在您的启动应用程序中混合使用 Spring Cloud Stream (SCSt) 和 Spring Cloud Task (SCT) 注释。这不是它的用途。如果您还没有,请参阅 this sample 以获取想法。

By definition a task is expected to emit data one time, how to reproduce this behavior with a Source polled on a regular interval?

一项任务 运行 用于 "finite period of time",这通过您的业务逻辑嵌入到应用程序 运行 中的时间来描述。任务还需要某种形式的触发器才能启动。您可以使用调度程序进行定期启动或通过流启动它。这是 write-up 关于如何通过 Spring 云数据流 (SCDF) 中的流启动它的方法。

如果你要在 SCDF 之外进行,你 仍然 运行 自己 triggertask 并设置正确的环境- var's,因此 Stream + Task 应用程序通过公共通道目标连接。

... but it seems spring-cloud-task requires a binder. Is there a way to skip it?

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