Spring Cloud Kafka Streams 与 Spring Cloud Stream 之间的区别?

Difference between Spring Cloud Kafka Streams Vs Spring Cloud Stream?

Spring Cloud Kafka Streams Vs Spring Cloud Stream Vs Spring Cloud Function Vs Spring AMQP 和 Spring for Apache Kafka 有什么区别?

Spring for Apache Kafka 和 Spring AMQP 是分别为 Apache Kafka 和 AMQP 编写 Spring 友好应用程序的基础库。它们提供设计模式,例如模板、消息侦听器容器和大量其他机制,以在较低级别与中间件系统进行交互。这些库不需要 Spring 引导,但 Spring 框架是最不常见的。换句话说,您可以使用这些库编写仅具有 Spring 框架上下文的传统 Spring 应用程序。

Spring Cloud Function 是属于 Spring Cloud 组合项目的一个库。这用作 Spring 启动应用程序的一部分。它为编写涉及各种范例的应用程序提供了一致的编程模型,例如请求-响应 (HTTP)、事件驱动 (pub-sub)、流处理 (pub-sub/streaming)、反应流等。编程模型在应用程序级别是通过 Java 8 功能模型 - 例如,您可以将业务逻辑编写为 java.util.function.Function<?, ?>。 Spring Cloud Function 未与任何中间件或其他此类技术耦合。

Spring Cloud Stream 是另一个 Spring 云项目,专门为事件驱动和流处理用例构建。因为这是一个 Spring 云项目,所以它需要用作 Spring 启动应用程序的一部分。 Spring Cloud Stream 的最新版本建立在 Spring Cloud Function 提供的基础之上。这本质上是一个目标绑定框架,允许您提供目标——例如 Kafka 主题或 RabbitMQ 交换。 Spring Cloud Stream 将为应用程序绑定这些目的地。核心 Spring Cloud Stream 没有任何中间件依赖项。这就是活页夹实现的用武之地。

Spring Cloud Stream 提供两种 Kafka 绑定器 - spring-cloud-stream-binder-kafkaspring-cloud-stream-binder-kafka-streams。第一个是活页夹实现,它为编写常规 Kafka 生产者和消费者提供编程模型支持。在大多数情况下,您可以采用同一个应用程序并提供另一个活页夹(例如 spring-cloud-stream-binder-rabbit),它应该可以工作(前提是应用程序进行了正确的配置更改)。这是因为绑定器是那些与中间件而不是应用程序本身通信的较低级别细节的绑定器。应用程序可以主要关注手头的业务逻辑。 Spring Cloud Stream 中的 Kafka Streams 活页夹是一个活页夹实现,专门为使用 Kafka Streams 编写流应用程序而构建。两种 Kafka 活页夹实现都在幕后使用 Spring 用于 Apache Kafka。

Spring Cloud Stream 中的兔子活页夹在内部使用 Spring AMQP。

总结一下:

  • Spring for Apache Kafka/Spring AMQP - 较低级别的基础库,不需要 Spring Boot.
  • Spring Cloud Function - Spring 云项目提供 Java 8 个函数式编程模型,与 Spring 引导应用程序一起使用。
  • Spring Cloud Stream - 使用 Spring Cloud Function 的事件驱动应用程序框架。与 Spring 启动应用程序一起使用。
  • Spring Cloud Stream Kafka/Kafka Streams - Spring Cloud Stream binder 实现使用 Spring for Apache Kafka。与 Spring 启动应用程序一起使用。