我的问题是在使用kafka的spring boot微服务中,使用kafkatemplate.send()或kafkaproducer.send()合适吗
我使用了kafkaconsumer而不是kafkalistner来调查记录,因为kafkalistner正在获取记录,当他们谈到主题时,我希望根据业务需要定期调查记录。
已经看过Kafka普洛德的文件了ucerhttps://kafka.apache.org/10/javadoc/org/apache/kafka/clients/producer/kafkaproducer.html
和Spring的Kafka模板
https://docs.spring.io/spring-kafka/reference/html/#kafka-模板
我无法做出一个决定,比如什么是理想的使用或至少使用一个的原因是不清楚的?
我需要的是我希望操作是同步的,也就是说,我想知道发布是否成功,因为如果没有传递记录,我需要重试发布。
任何帮助都将不胜感激。
1条答案
按热度按时间xcitsw881#
对于你的第一个问题,我应该使用Kafka模板还是Kafka生产者?
Kafka生产者是在apachekafka中定义的。kafkatemplate是spring对它的实现(尽管它不直接实现producer),因此它提供了更多的方法供您使用。
阅读此链接:
Kafka模板和Kafka制作人有什么区别?
对于重试机制,在发布失败的情况下。我已经用另一个问题回答了这个问题。
acks参数控制在生产者认为写入成功之前,必须有多少分区副本接收到记录。
acks参数有3个值:
acks=0时,在假定消息成功发送之前,生产者不会等待代理的答复。
acks=1时,生产者将在领头副本接收到消息的那一刻从代理接收到一个成功的响应。如果无法将消息写入leader,生产者将收到错误响应并可以重试。
acks=all,一旦所有同步副本接收到消息,生产者将从代理接收成功响应。
在kaka producer中配置重试的最佳方法