如何确保在Kafka中永久保留日志?

时间:2016-05-26 00:00:30

标签: apache-kafka

我需要配置Kafka never 来删除日志。看看他们的文档,我看到两种控制它的参数:

  • "日志清理器",在http://kafka.apache.org/documentation.html#compaction中描述。似乎设置log.cleaner.enable = false会阻止清理程序删除或压缩日志。

  • &#34;日志保留&#34;机制,在log.retention.<time scales> log.retention.ms = -1下描述。似乎设置enum class FEATURE { F1, F2, F3, F4 }; typedef struct feature_config { std::map<FEATURE, std :: vector<int> > f_conf; } Config; typedef struct my_key{ const Config key_f_config = { .f_conf = { {FEATURE::F1,{20,25,30,35,40,45,50,55}}, {FEATURE::F2,{20,30,40,50,60,70,80,90,120}}, {FEATURE::F3,{0,25,50,75,100}}, {FEATURE::F4,{10,20}} } }; vector<int> key_data; } KEY; 表示无限保留。

我的问题是:

  

这两种机制之间的关系是什么,这些只有两种,上述设置是否必要且足以防止日志被删除?

2 个答案:

答案 0 :(得分:5)

不确定您使用的是哪个版本。对我来说,我用这个:

log.retention.hours=2147483647

这大约是245,000年。我相信我在某个时候尝试了-1,但是使用了最大值。也许log.retention.ms接受不同的值,但无论如何 - 第二个配置选项应该足够了。我的猜测是没有必要选择;要么就足够了。当然,第二个就足够了。

答案 1 :(得分:0)

this回答中所述,您可以为log.retention.hourslog.retention.bytes设置-1。