为什么要使用 Spring Cloud Stream 与 kafka/rabbitmq 绑定,而您可以使用 Spring Cloud Task 进行绑定?

Why to use Spring Cloud Stream for binding with kafka/rabbitmq when you can use Spring Cloud Task for same?

我可以通过spring云任务连接到kafka,为什么要使用spring云蒸汽

这个问题的答案归结为 Spring Cloud Task 和 Spring Cloud Stream 之间的根本区别。

Spring Cloud Task 用于 运行 一个 必须完成 的应用程序(success/fail).换句话说,它是短暂的。

Spring Cloud Stream 适用于 long 运行ning 应用程序,您可以在其中保持应用程序正常运行运行只要有数据流通过数据管道就可以。

如果你有一个连接到 RabbitMQ 或 Kafka 的应用程序并且执行一些必须在特定时间范围内完成的任务,那么你可以选择 Spring Cloud Task 到 运行 这个申请。

示例用例:每次您手动安排或启动应用程序时,处理来自数据库的信息并将内容推送到RabbitMQ/Kafka。

然而,如果您有一个连接到 RabbitMQ 或 Kafka 的应用程序,但它持续 produce/consume 数据 to/from RabbitMQ 或 Kafka 那么,您需要 运行 this as Spring 云流应用程序。

示例用例:当数据库中有新记录时处理来自数据库的信息,并不断将它们推送到RabbitMQ/Kafka。在这种情况下,您需要启动您的应用程序并 运行 从数据库中捕获实时事件,因此您会选择 Spring Cloud Stream 应用程序。

编排工具 Spring Cloud Data Flow 有助于管理这两种类型的应用程序,但您需要根据您的用例选择使用哪一种。