kafka 没有生产者发送的消息

kafka does not have messages that producer sent

我使用 spring 框架和具有 3 个集群的 kafka。我发现消费者没有使用一些消息(比如说所有发送消息之间的 0.01%)所以在生产者代码中我记录了 returned by api:

的消息偏移量
ListenableFuture<SendResult<String, Message>> future = messageTemplate.sendDefault(id, message);
SendResult<String, Message> sendResult = future.get();
String offset = sendResult.getRecordMetadata().offset();

我使用 return 偏移量在所有分区中查询 kafka 主题但它没有找到消息(我测试了与消费者使用的消息相关的其他偏移量并且它们在 kafka 中),问题是什么以及如何我可以确保发送到 kafka 的消息吗??

我在生产者

中也使用了messageTemplate.flush();

我发现当 Kafka 代理的主题领导者宕机时,Kafka 将重新平衡自身,另一个代理成为该分区的领导者,如果 ack 配置未设置为 all 则有在此过程中可能会丢失一些数据。所以将配置更改为

ack=all

此外,如果同步副本中的最小值小于 2,则有可能丢失数据,因此至少将其设置为 2。

min.insync.replicas = 2