根据 Kafka 文档这里。
Kafka 集群会在可配置的时间段内保留所有已发布的消息(无论它们是否已被消费)。例如,如果日志保留时间设置为两天,则消息发布后的两天内可供使用,之后将被丢弃以释放空间。
有没有什么方法可以存储(比如在数据库中)未消费的消息,然后在 Kafka 保留期过后将其丢弃?
如果超过 log.retention.hours 或 log.retention.bytes ,Kafka 会删除日志。在您的情况下,如果您想存储那些将要删除的未使用的消息, 首先使用如下类似命令找到之前的消费者消费过数据的位置,
/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group 1
现在尝试通过启动 kafka-console-consumer 来将未使用的消息存储在文件中,方法是提供与要使用未使用的消息的位置的适当偏移量。
/bin/kafka-console-consumer --bootstrap-server --topic --partition 1 --offset 1060 > file.out