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
我使用 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