我看到有两种方法可以生成到kafka主题的消息,一种是使用kafkaproducer.send(producerrecord<k,v>record),另一种是使用(springframework.message)messagechannel.send(message)。前者返回未来,后者返回布尔值。我想了解这两种方法之间的区别或一种方法优于另一种方法的优点,以便为特定的情况选择合适的方法。如果有人能解释一下我会很感激的。
我看到有两种方法可以生成到kafka主题的消息,一种是使用kafkaproducer.send(producerrecord<k,v>record),另一种是使用(springframework.message)messagechannel.send(message)。前者返回未来,后者返回布尔值。我想了解这两种方法之间的区别或一种方法优于另一种方法的优点,以便为特定的情况选择合适的方法。如果有人能解释一下我会很感激的。
1条答案
按热度按时间vnzz0bqm1#
这个
KafkaProducer
是一个普通的apachekafka客户端api。你可以用它做任何你需要的事情,自己写所有的逻辑。那完全可以。另一方面,如果您希望使用更高级的api,并且您的应用程序完全基于spring,那么您肯定应该考虑将spring用于apache kafka框架:https://spring.io/projects/spring-kafka. 它提供了一个众所周知的模板模式实现
KafkaProducer
-KafkaTemplate
.spring与kafka的通道适配器实现集成(https://docs.spring.io/spring-integration/docs/current/reference/html/kafka.html#kafka)当您的应用程序基于企业集成模式,并且逻辑以集成流的形式组成时,就很方便了。这样,当消息被放置到特定的通道时,通道适配器订户将呼叫
KafkaTemplate
为了一个KafkaProducer.send()
在下面。是的,这个通道适配器实现处理Future
为了我们。您可能只需要了解更多关于spring集成的信息,以及何时在普通的ApacheKafkaAPI上使用它。。。