【问题标题】:What is the difference between Spring Cloud Stream and Spring Cloud Task?Spring Cloud Stream 和 Spring Cloud Task 有什么区别?
【发布时间】:2019-09-22 03:47:14
【问题描述】:
我目前的理解是,这两个项目都在 Spring Cloud Dataflow 下,并作为管道的组件。但是,两者都可以重复(根据定义,流是重复的,其中任务可以每隔特定时间间隔运行一次)。此外,两者都可以配置为通过消息代理与管道的其余部分进行通信。目前有this未回答的问题,所以我还没有找到明确的答案。
【问题讨论】:
标签:
java
spring
spring-cloud-stream
spring-cloud-dataflow
spring-cloud-task
【解决方案1】:
请看我的回复如下:
我目前的理解是,这两个项目都在 Spring Cloud Dataflow 下,并作为管道的组件。
Spring Cloud Stream 和 Spring Cloud Task 都不属于 Spring Cloud Data Flow,而是可以作为独立项目使用,Spring Cloud Data Flow 只使用它们。
Spring Cloud Stream 让您bind 将您的事件驱动的长时间运行的应用程序集成到消息传递中间件或流平台中。作为开发人员,您必须选择您的 binder(RabbitMQ、Apache Kafka 等的 binder 实现)来将您的事件或数据流式传输到您绑定到的消息传递中间件。
Spring Cloud Task 不会将您的应用程序绑定到消息传递中间件。相反,它提供抽象和生命周期管理来运行您的ephemeral 或finite 持续时间应用程序(任务)。它还为开发 Spring Batch 应用程序提供了基础。
但是,两者都可以循环(根据定义,流是循环的,其中任务可以每隔特定时间间隔运行一次)
可以触发/调度任务应用程序以使其成为循环应用程序,而流式应用程序是长期运行的,而不是循环应用程序。
此外,两者都可以配置为通过消息代理与管道的其余部分进行通信。
虽然可以将任务应用程序配置为与消息传递中间件通信,但pipeline 的概念在流式与任务(批处理)方面是不同的。对于流式应用程序,管道是指通过消息传递中间件进行的通信,而对于任务应用程序,composed 任务的概念允许您创建多个任务应用程序的条件工作流。有关组合任务的更多信息,您可以参考documentation。