【问题标题】:Difference between @KafkaListener, @StreamListener and @ServiceActivator?@KafkaListener、@StreamListener 和 @ServiceActivator 的区别?
【发布时间】:2018-05-12 02:58:27
【问题描述】:
我想将 Kafka 与 Spring Boot 和 Avro 模式一起使用。
但我被困在“这三个听众之间有什么区别?”。
创建侦听器有 3 种可能性:使用 - @KafkaListener、@StreamListener 或 @ServiceActivator 注释方法。似乎他们都在监听传入的事件,但我看不到/发现这些解决方案之间的区别。
- 这三者有什么区别?
- 每种解决方案的优缺点是什么?
- 哪个更适合使用 Avro?
【问题讨论】:
标签:
spring-cloud-stream
spring-kafka
【解决方案1】:
所以,我将从@KafkaListener 开始。那个很简单,因为它来自“spring-kafka”项目,可以在 Spring Cloud Stream 之外使用。
@ServiceActivator 来自“spring-integraton”项目,与@KafkaListener 类似,可以在 Spring Cloud Stream 之外使用。
两者都可以在 Spring Cloud Stream 应用程序内部使用 - 主要是为了方便。
@StreamListener 是唯一一个原生于 Spring Cloud Stream 的。
对于简单的情况,您可以自行选择。对于更复杂的情况,请参阅特定注释的额外功能。例如,您可以在使用@StreamListener时定义条件。