【问题标题】:Spring-Kafka vs. kafka-clients directlySpring-Kafka 与 kafka-clients 直接对比
【发布时间】:2020-04-28 22:12:53
【问题描述】:

我有一个基于 spring-boot 的应用程序,它需要在 Kafka 上消费/产生事件。 我对图书馆的选择犹豫不决。

直接使用Kafka-clients似乎很简单,无需管理spring-Kafka和Kafka-clients之间的兼容性矩阵:

另一方面,使用 spring-Kafka 可以帮助项目规范化配置属性以使用 Kafka 并添加嵌入式 kafka 进行测试。

除了直接使用 kafka-clients 之外,还有其他原因使用 spring-Kafka 进行 spring-boot 吗?

【问题讨论】:

  • 使用普通客户端,您可以更好地控制对象的使用方式,并且不会被 Spring 生态系统和注释所束缚。顺便说一下,Spring 并不是更高级别的 kafka 客户端的唯一选择。
  • 如果你使用 spring boot 进行依赖管理,那么在版本冲突方面几乎不需要担心。您可以使用传递提供的客户端库,或使用属性覆盖版本。

标签: java spring-boot apache-kafka spring-kafka


【解决方案1】:

我对spring api有点恼火,可能是因为自己的无知,但似乎spring框架实际上阻止了某些设计。

我有一种情况,我想为我的消费者创建一个装饰器,以处理一些跨领域的问题,例如根据我收到的消息中的元数据设置日志记录上下文。

spring kafka 的 @KafkaListener 注解似乎与该方法不兼容,但我不确定直接使用 kafka 客户端是否可以解决问题。

我不想使用 AOP(AOP 是一种应该根除的疾病)。

【讨论】:

    【解决方案2】:

    基本上,spring-kafka 项目帮助您应用核心 Spring 概念(依赖注入和声明性) - 它提供了一个“模板”作为发送消息的高级抽象。 - 它还为带有@KafkaListener 注释和“侦听器容器”的消息驱动的 POJO 提供支持。

    对于熟悉 JMS 的人来说,您会看到与 Spring 中对其他消息传递框架的 JMS 支持的相似之处。 如果你有 spring 开发人员,他们会更舒服地使用 spring-kafka 并使用 Embedded Kafka 进行测试。

    spring-Kafka 减少了技术/冗余代码:您可以用更少的代码行实现相同的目标。 - https://docs.spring.io/spring-kafka/reference/html/#even-quicker-with-spring-boot

    spring-Kafka 帮助您通过配置控制大部分 Kafka 设置。 它简化了所有错误处理和事务管理。

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2022-06-16
      • 1970-01-01
      • 2018-12-07
      • 2018-08-29
      • 2023-03-31
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多