Spring Cloud Stream 和 Spring Cloud Task 有什么区别?

What is the difference between Spring Cloud Stream and Spring Cloud Task?

我目前的理解是,这两个项目都在 Spring Cloud Dataflow 下,并作为管道的组件。但是,两者都可以重复出现(根据定义,流是重复出现的,其中任务可以 运行 每个特定时间间隔)。此外,两者都可以配置为通过消息代理与管道的其余部分进行通信。目前有 this 个未回答的问题,所以我还没有找到明确的答案。

请看我的回复如下:

My current understanding is that both of these projects are under Spring Cloud Dataflow, and serve as components of the pipeline.

Spring Cloud Stream 和 Spring Cloud Task 都不属于 Spring Cloud Data Flow,相反,它们可以用作独立项目和 Spring Cloud Data Flow 只是使用它们。

Spring Cloud Stream 可让您 bind 将事件驱动的长期 运行 应用程序集成到消息传递中间件或流媒体平台中。作为开发人员,您必须选择您的活页夹(RabbitMQ、Apache Kafka 等的活页夹实现)来流式传输您的事件或数据 from/to 您绑定到的消息传递中间件。

Spring Cloud Task 不会将您的应用程序绑定到消息传递中间件。相反,它为 运行 您的 ephemeralfinite 持续时间应用程序(任务)提供抽象和生命周期管理。它还为开发 Spring 批处理应用程序提供了基础。

However, both can be made recurring (a stream is by definition recurring, where a task can run every certain time interval)

任务应用程序可以 triggered/scheduled 使其成为周期性应用程序,而流式应用程序是长期的 运行ning,而不是周期性应用程序。

In addition, both can be configured to communicate with the rest of the pipeline through the message broker.

虽然任务应用程序可以配置为与消息传递中间件通信,但是 pipeline 的概念在流与任务(批处理)方面是不同的。对于流式应用程序,管道是指通过消息传递中间件进行通信,而对于任务应用程序,composed 任务的概念允许您创建多任务应用程序的条件工作流。关于组合任务的更多信息,可以参考documentation