【发布时间】: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
Spring Cloud Kafka Streams Vs Spring Cloud Stream Vs Spring Cloud Function Vs Spring AMQP 和 Spring for Apache Kafka 有什么区别?
【问题讨论】:
标签: apache-kafka spring-cloud-stream
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。
总结一下:
【讨论】: