【问题标题】:Difference between Spring Cloud Kafka Streams Vs Spring Cloud Stream?Spring Cloud Kafka Streams 与 Spring Cloud Stream 之间的区别?
【发布时间】:2021-09-28 00:29:44
【问题描述】:

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

【问题讨论】:

  • 文档中有什么不清楚的地方?

标签: apache-kafka spring-cloud-stream


【解决方案1】:

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

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

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

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

Spring Cloud Stream 中的 rabbit binder 内部使用 Spring AMQP。

总结一下:

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

【讨论】:

  • 谢谢,您能分享示例吗?
  • 您可能希望从每个项目的参考文档开始。相关示例从那里链接。
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多