@KafkaListener、@StreamListener 和@ServiceActivator 的区别?
Difference between @KafkaListener, @StreamListener and @ServiceActivator?
我想将 Kafka 与 Spring Boot 和 Avro 模式一起使用。
但我坚持 'What is the difference between those 3 listeners?'。
创建侦听器有 3 种可能性:使用 - @KafkaListener
、@StreamListener
或 @ServiceActivator
注释方法。似乎所有这些都在监听传入事件,但我无法 see/find 这些解决方案之间的区别。
- 这三个有什么区别?
- 每种解决方案的优缺点是什么?
- 哪个更适合使用 Avro 的目的?
那么,我将从 @KafkaListener
开始。这个很简单,因为它来自 "spring-kafka" 项目,可以在 Spring Cloud Stream 之外使用。
@ServiceActivator
来自 "spring-integraton" 项目,类似于 @KafkaListener
可以在 Spring Cloud Stream 之外使用。
两者也可以在 Spring Cloud Stream 应用程序内部使用 - 主要是为了方便。
@StreamListener
是 Spring Cloud Stream 中唯一一个原生的。
对于简单的情况,您可以自行选择。对于更复杂的情况,请参阅特定注释的额外功能。例如,您可以在使用 @StreamListener
.
时定义条件
我想将 Kafka 与 Spring Boot 和 Avro 模式一起使用。
但我坚持 'What is the difference between those 3 listeners?'。
创建侦听器有 3 种可能性:使用 - @KafkaListener
、@StreamListener
或 @ServiceActivator
注释方法。似乎所有这些都在监听传入事件,但我无法 see/find 这些解决方案之间的区别。
- 这三个有什么区别?
- 每种解决方案的优缺点是什么?
- 哪个更适合使用 Avro 的目的?
那么,我将从 @KafkaListener
开始。这个很简单,因为它来自 "spring-kafka" 项目,可以在 Spring Cloud Stream 之外使用。
@ServiceActivator
来自 "spring-integraton" 项目,类似于 @KafkaListener
可以在 Spring Cloud Stream 之外使用。
两者也可以在 Spring Cloud Stream 应用程序内部使用 - 主要是为了方便。
@StreamListener
是 Spring Cloud Stream 中唯一一个原生的。
对于简单的情况,您可以自行选择。对于更复杂的情况,请参阅特定注释的额外功能。例如,您可以在使用 @StreamListener
.