@KafkaListener、@StreamListener 和 @ServiceActivator 的区别?

Posted

技术标签:

【中文标题】@KafkaListener、@StreamListener 和 @ServiceActivator 的区别?【英文标题】:Difference between @KafkaListener, @StreamListener and @ServiceActivator? 【发布时间】:2018-05-12 02:58:27 【问题描述】:

我想将 Kafka 与 Spring Boot 和 Avro 模式一起使用。 但我被困在“这三个听众之间有什么区别?”。 创建侦听器有 3 种可能性:使用 - @KafkaListener@StreamListener@ServiceActivator 注释方法。似乎他们都在监听传入的事件,但我看不到/发现这些解决方案之间的区别。

    这三者有什么区别? 每种解决方案的优缺点是什么? 哪个更适合使用 Avro?

【问题讨论】:

【参考方案1】:

所以,我将从@KafkaListener 开始。那个很简单,因为它来自“spring-kafka”项目,可以在 Spring Cloud Stream 之外使用。

@ServiceActivator 来自“spring-integraton”项目,与@KafkaListener 类似,可以在 Spring Cloud Stream 之外使用。

两者都可以在 Spring Cloud Stream 应用程序内部使用 - 主要是为了方便。

@StreamListener 是唯一一个原生于 Spring Cloud Stream 的。

对于简单的情况,您可以自行选择。对于更复杂的情况,请参阅特定注释的额外功能。例如,您可以在使用@StreamListener时定义条件。

【讨论】:

以上是关于@KafkaListener、@StreamListener 和 @ServiceActivator 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Spring @KafkaListener 和并发

kafka专栏SpringBoot下`@KafkaListener`消费监听属性详解

@KafkaListener每次都从头开始阅读

KafkaListener动态指定多个topic

KafkaListener动态指定多个topic

Kafka Kstream 和 Spring @KafkaListener 有何不同?