【问题标题】:What is the difference between producing message to kafka topic with Spring Integration MessageChannel and KafkaProducer?使用 Spring Integration MessageChannel 和 KafkaProducer 向 kafka 主题生成消息有什么区别?
【发布时间】:2020-11-17 18:16:52
【问题描述】:

我看到有两种方法可以向 kafka 主题生成消息,一种是使用 KafkaProducer.send(ProducerRecord 记录),另一种是使用(springframework.message) MessageChannel.send(Message)。前者返回 Future,后者返回布尔值。我想了解这两者之间的区别或一个相对于另一个的优势,因此我可以为特定情况选择合适的方法。如果有人能对此进行解释,我将不胜感激。

【问题讨论】:

    标签: apache-kafka spring-integration spring-kafka


    【解决方案1】:

    KafkaProducer 是一个普通的 Apache Kafka 客户端 API。你可能可以用它来做任何你需要自己编写所有逻辑的事情。没关系。

    另一方面,如果您想使用更高级的 API 并且您的应用程序完全基于 Spring,那么您绝对应该考虑将 Spring 用于 Apache Kafka 框架:https://spring.io/projects/spring-kafka。它在提到的KafkaProducer - KafkaTemplate 上提供了一个众所周知的模板模式实现。

    当您的应用程序基于企业集成模式并且逻辑由集成流组成时,Spring Integration 及其用于 Kafka 的通道适配器实现 (https://docs.spring.io/spring-integration/docs/current/reference/html/kafka.html#kafka) 会派上用场。这样,当消息被放置到特定通道时,通道适配器订阅者将调用KafkaTemplate 以获取下面的KafkaProducer.send()。是的,这个通道适配器实现为我们正确处理了Future

    您可能只需要了解有关 Spring Integration 的更多信息以及何时在普通的 Apache Kafka API 上使用它...

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 2020-02-27
      • 2018-11-24
      • 1970-01-01
      • 2021-10-11
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      相关资源
      最近更新 更多