Spring-Kafka vs. kafka-clients directly



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

直接使用 Kafka 客户端似乎很简单,而不必管理 spring-Kafka 和 Kafka 客户端之间的兼容性矩阵:

  • https://spring.io/projects/spring-kafka

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

使用spring-Kafka作为弹簧靴而不是直接使用kafka客户端还有其他原因吗?

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

对于熟悉 JMS 的人来说,你会看到与 Spring 中对其他消息传递框架的 JMS 支持的相似之处。 如果你有弹簧开发人员,他们会使用spring-kafka和测试使用嵌入式Kafka变得更加舒适。

spring-Kafka 减少了技术/冗余代码:你用更少的代码行实现了同样的事情。 - https://docs.spring.io/spring-kafka/reference/html/#even-quicker-with-spring-boot

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

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

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

来自 spring kafka的@KafkaListener注释似乎与这种方法不兼容,但我不确定直接使用 kafka 客户端是否会解决问题。

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

最新更新