首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在confluent-kafka-python中设置主题日志保留

在confluent-kafka-python中设置主题日志保留
EN

Stack Overflow用户
提问于 2017-05-18 07:43:41
回答 2查看 2.3K关注 0票数 2

我在文档中找不到如何在使用confluent-kafka创建生产者时设置保留时间。

如果我只指定'bootstrap-servers‘,默认保留时间是1天。我希望能够改变这一点。

(我想在python API中完成这项工作,而不是在命令行上。)

EN

回答 2

Stack Overflow用户

发布于 2018-09-27 13:57:11

保留时间是在创建主题时设置的,而不是在生产者配置上设置的。

如果您的server.properties允许自动创建主题,那么您将在其中设置默认值。

否则,您可以使用AdminClient API发送支持config属性dict<str,str>NewTopic请求

代码语言:javascript
复制
from confluent_kafka.admin import AdminClient, NewTopic

# a = AdminClient(...) 

topics = list()
t = NewTopic(topic, num_partitions=3, replication_factor=1, config={'log.retention.hours': '168'})
topics.append(t)

# Call create_topics to asynchronously create topics, a dict
# of <topic,future> is returned.
fs = a.create_topics(topics)

# Wait for operation to finish.
# Timeouts are preferably controlled by passing request_timeout=15.0
# to the create_topics() call.
# All futures will finish at the same time.
for topic, f in fs.items():
    try:
        f.result()  # The result itself is None
        print("Topic {} created".format(topic))
    except Exception as e:
        print("Failed to create topic {}: {}".format(topic, e))

在同一链接中,您可以找到alter topic请求

票数 2
EN

Stack Overflow用户

发布于 2017-05-18 16:05:36

保留时间不是生产者的属性。默认保留时间是在代理配置文件server.properties和log.retention.hours等属性中设置的,例如安装上的/etc/kafka/server.properties ...depending。

您可以通过以下方式更改每个主题的保留时间:

代码语言:javascript
复制
$ <path-to-kafka>/bin/kafka-topics.sh --zookeeper <zookeeper-quorum> --alter --topic <topic-name> --config retention.ms=<your-desired-retention-in-ms>

HTH……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44036398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档