我的问题是在使用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
我无法做出决定,比如什么是理想的使用方式,或者至少使用其中一种而不是另一种的原因尚不清楚?
我的需要是我希望操作同步,即我想知道发布是否成功,因为如果记录未交付,我需要重试发布。
对于你的第一个问题,我应该使用kafka模板还是Kafka生产者?
Kafka Producer 在 Apache Kafka 中定义。 KafkaTemplate 是 Spring 对它的实现(尽管它没有实现 Producer 直接),所以它提供了更多的方法供您使用。
阅读此链接::
Kafka Template 和 Kafka Producer 有什么区别?
发布失败时的重试机制。 我在另一个问题里已经回答过这个问题了
acks参数控制必须接收多少个分区副本 生产者之前的记录即可认为写入成功。
acks参数有3个值:
acks=0,生产者之前不会等待broker的回复 假设消息发送成功。
acks=1,生产者会收到来自 领导者副本收到消息后立即代理。如果 消息无法写入领导者,生产者将收到 错误响应,可以重试。
acks=all,生产者将收到来自 一旦所有同步副本收到消息,就代理。