我的理解是spring-kafka是为了与Kafka Client API交互而创建的,后来,spring-cloud-stream项目是为了“构建与共享消息系统连接的高度可扩展的事件驱动微服务”而创建的,该项目包括几个绑定器,其中一个是允许与Kafka Stream API交互的绑定器:
spring-cloud-stream-binder-kafka-streams
所以我很清楚,如果我想与Kafka流API交互,我将使用Spring-Cloud-Stream方法和适当的绑定器。
但是,我发现您可以使用spring-kafka方法与Kafka Stream API交互。
需要以下两个依赖项。这里有一个例子。
'org.springframework.kafka:spring-kafka'
'org.apache.kafka:kafka-streams'
所以我的问题是,如果这两种方法都允许与Kafka流API交互,那么这两种方法之间的区别是什么?
正如Gary在上面的评论中指出的,spring-kafka
是较低级别的库,它为Spring Cloud Stream Kafka Streams绑定器(spring-cloud d-stream-binder-kafka-stream
)提供了构建块。绑定器提供了一个编程模型,您可以使用它将Kafka Streams处理器编写为java.util.funciton.Funciton
或java.util.function.消费者
。您可以拥有多个这样的函数,并且每个函数都将构建自己的Kafka Streams拓扑。在幕后,绑定器使用Spring-Kafka
使用StreamsBuilderFactoryBean
构建Kafka StreamsStreamsBuilder
对象。Binder还允许您组合各种函数。功能模型主要来自Spring Cloud Function,但它适用于绑定器实现中的Kafka Streams。简短的答案是spring-Kafka
和Spring Cloud Stream Kafka Streams绑定器都可以工作,但绑定器提供了与Spring Cloud Stream一致的编程模型和额外功能,而spring-kafka
提供了各种低级构建块。
在Spring云网站(https://spring.io/projects/spring-cloud-stream),列出了要使用的活页夹选项。我们有阿帕奇Kafka和Kafka流选项。 他们之间有什么区别
我正在研究Apache Kafka。我想知道哪一个更好:Kafka或ActiveMQ。这两种技术的主要区别是什么?我想在Spring MVC中实现Kafka。
用法 对于使用Apache Kafka绑定器,您只需要使用以下Maven坐标将其添加到您的Spring Cloud Stream应用程序: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-kafka</artifactId> </dependen
使用Spring for Apache Kafka或Spring AMQP,我可以实现消息发布/订阅。Spring云总线使用Kafka/rabbitmq来完成大致相同的事情,它们之间的区别是什么?
我们在Spring Boot的基础上开发了一个内部公司框架,我们希望通过Spring Cloud Stream支持Kafka Streams。我们需要自动向所有出站消息注入一些头。我们通过标准的Spring Cloud Stream Kafka Binder注册了一个定制的,实现了这一点,但这不适用于Kafka Streams,因为它们似乎遵循不同的路径。 对于Spring Cloud Strea
我发现maven repo中有几个Kafka。 阿帕奇的maven回购协议中有两个Kafka。https://mvnrepository.com/artifact/org.apache.kafka/kafka https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients 它们都可以从kafka服务器生成Mesg并消耗msg。 我