【发布时间】:2021-11-11 08:31:41
【问题描述】:
我的理解是,spring-kafka 是为了与 Kafka 客户端 API 交互而创建的,后来,spring-cloud-stream 项目是为了“构建高度可扩展的事件驱动微服务与共享消息系统”,并且这个项目包括几个绑定器,其中一个是允许与 Kafka Stream API 交互的绑定器:
spring-cloud-stream-binder-kafka-streams
所以我很清楚,如果我想与 Kafka Stream API 交互,我将使用带有适当绑定器的 spring-cloud-stream 方法。
但是,我发现您也可以使用 spring-kafka 方法与 Kafka Stream API 进行交互。
需要以下两个依赖项。一个例子是here。
'org.springframework.kafka:spring-kafka'
'org.apache.kafka:kafka-streams'
所以我的问题是 - 如果这两种方法都允许与 Kafka Stream API 交互,那么这两种方法之间有什么区别?
【问题讨论】:
-
Spring Cloud Stream 是更高级别的抽象(两个 binder 都在下面使用 spring-kafka)。它提供了自以为是的配置默认值、自动配置主题等。而且,除了使用 Kafka Streams 时,它还允许您轻松切换传输(例如,使用 RabbitMQ 而不是 Kafka)。使用 Kafka Streams 时,它不是那么灵活,因为您仍在使用 Streams API。
标签: spring apache-kafka spring-kafka spring-cloud-stream spring-cloud-stream-binder-kafka