spring-kafka 和 Apache-Kafka-Streams-Binder 在与 Kafka Stream API 交互方面有什么区别?
What is the difference between spring-kafka and Apache-Kafka-Streams-Binder regarding the interaction with Kafka Stream API?
我的理解是 spring-kafka was created to interact with Kafka Client APIs, and later on, spring-cloud-stream 项目是为“构建与共享消息系统连接的高度可扩展的事件驱动微服务”而创建的,该项目包括几个活页夹,其中之一是允许与 Kafka Stream API:
交互的活页夹
spring-cloud-stream-binder-kafka-streams
所以我很清楚,如果我想与 Kafka Stream API 交互,我将使用 spring-cloud-stream 方法使用适当的活页夹。
但是,我发现您可以与 Kafka Stream API 以及 spring-kafka[=31] 进行交互=]方法。
需要以下两个依赖项。一个例子是 here.
'org.springframework.kafka:spring-kafka'
'org.apache.kafka:kafka-streams'
所以我的问题是 - 如果这两种方法都允许与 Kafka Stream API 交互,那么这两种方法之间有什么区别?
正如 Gary 在上面的评论中指出的那样,spring-kafka
是较低级别的库,它为 Spring Cloud Stream Kafka Streams binder (spring-cloud-stream-binder-kafka-streams
) 提供构建块。 binder 提供了一个编程模型,您可以使用该模型将 Kafka Streams 处理器编写为 java.util.funciton.Funciton
或 java.util.function.Consumer
。您可以有多个这样的函数,每个函数都将构建自己的 Kafka Streams 拓扑。在幕后,活页夹使用 Spring-Kafka
使用 StreamsBuilderFactoryBean
构建 Kafka Streams StreamsBuilder
objet。 Binder 还允许您组合各种功能。功能模型主要来自 Spring Cloud Function,但它适用于 binder 实现中的 Kafka Streams。简短的回答是 spring-Kafka
和 Spring Cloud Stream Kafka Streams 活页夹都可以工作,但是活页夹提供了一个编程模型和与 Spring Cloud Stream 一致的额外功能,而 spring-kafka
给出了各种低级构建块。
我的理解是 spring-kafka was created to interact with Kafka Client APIs, and later on, spring-cloud-stream 项目是为“构建与共享消息系统连接的高度可扩展的事件驱动微服务”而创建的,该项目包括几个活页夹,其中之一是允许与 Kafka Stream API:
交互的活页夹spring-cloud-stream-binder-kafka-streams
所以我很清楚,如果我想与 Kafka Stream API 交互,我将使用 spring-cloud-stream 方法使用适当的活页夹。
但是,我发现您可以与 Kafka Stream API 以及 spring-kafka[=31] 进行交互=]方法。
需要以下两个依赖项。一个例子是 here.
'org.springframework.kafka:spring-kafka'
'org.apache.kafka:kafka-streams'
所以我的问题是 - 如果这两种方法都允许与 Kafka Stream API 交互,那么这两种方法之间有什么区别?
正如 Gary 在上面的评论中指出的那样,spring-kafka
是较低级别的库,它为 Spring Cloud Stream Kafka Streams binder (spring-cloud-stream-binder-kafka-streams
) 提供构建块。 binder 提供了一个编程模型,您可以使用该模型将 Kafka Streams 处理器编写为 java.util.funciton.Funciton
或 java.util.function.Consumer
。您可以有多个这样的函数,每个函数都将构建自己的 Kafka Streams 拓扑。在幕后,活页夹使用 Spring-Kafka
使用 StreamsBuilderFactoryBean
构建 Kafka Streams StreamsBuilder
objet。 Binder 还允许您组合各种功能。功能模型主要来自 Spring Cloud Function,但它适用于 binder 实现中的 Kafka Streams。简短的回答是 spring-Kafka
和 Spring Cloud Stream Kafka Streams 活页夹都可以工作,但是活页夹提供了一个编程模型和与 Spring Cloud Stream 一致的额外功能,而 spring-kafka
给出了各种低级构建块。