@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 这些解决方案之间的区别。

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

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

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

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

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

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

时定义条件