@KafkaListener,@ StreamListener和@ServiceActivator之间的区别?

Kam*_*ski 4 spring-cloud-stream spring-kafka

我想使用Kafka与Spring Boot和Avro架构.但是我被困在'这三个听众之间有什么区别?'.创建侦听器有3种可能性:使用 - @KafkaListener,@StreamListener或注释方法@ServiceActivator.似乎所有人都在监听传入的事件,但我无法看到/发现这些解决方案之间的差异.

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

Ole*_*sky 7

所以,我会开始@KafkaListener.这个很简单,因为它来自"spring-kafka"项目,可以在Spring Cloud Stream之外使用.

@ServiceActivator来自"spring-integraton"项目,同样@KafkaListener可以在Spring Cloud Stream之外使用.

两者都可以在Spring Cloud Stream应用程序中使用 - 主要是为了方便起见.

@StreamListener是唯一一个原生于Spring Cloud Stream的产品.

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