KafkaTemplate 和 KafkaProducer 发送方法的区别?

问题描述 投票:0回答:1

我的问题是在使用kafka的Spring Boot微服务中,什么适合使用

KafkaTemplate.send()
KafkaProducer.send()

我使用

KafkaConsumer
而不是
KafkaListener
来轮询记录,因为
KafkaListener
正在获取记录,当它们进入主题时,我希望根据业务需求定期轮询记录。

已阅读

KafkaProducer
的文档https://kafka.apache.org/10/javadoc/org/apache/kafka/clients/ Producer/KafkaProducer.html

春天

KafkaTemplate

https://docs.spring.io/spring-kafka/reference/html/#kafka-template

我无法做出决定,比如什么是理想的使用方式,或者至少使用其中一种而不是另一种的原因尚不清楚?

我的需要是我希望操作同步,即我想知道发布是否成功,因为如果记录未交付,我需要重试发布。

java spring-boot apache-kafka spring-kafka
1个回答
3
投票

对于你的第一个问题,我应该使用kafka模板还是Kafka生产者?

Kafka Producer 在 Apache Kafka 中定义。 KafkaTemplate 是 Spring 对它的实现(尽管它没有实现 Producer 直接),所以它提供了更多的方法供您使用。

阅读此链接::

Kafka Template 和 Kafka Producer 有什么区别?

发布失败时的重试机制。 我在另一个问题里已经回答过这个问题了

acks参数控制必须接收多少个分区副本 生产者之前的记录即可认为写入成功。

acks参数有3个值:

acks=0,生产者之前不会等待broker的回复 假设消息发送成功。

acks=1,生产者会收到来自 领导者副本收到消息后立即代理。如果 消息无法写入领导者,生产者将收到 错误响应,可以重试。

acks=all,生产者将收到来自 一旦所有同步副本收到消息,就代理。

在 Kaka Producer 中配置重试的最佳方式

© www.soinside.com 2019 - 2024. All rights reserved.