为了账号安全,请及时绑定邮箱和手机立即绑定

Java在源码中设置Kafka保留时间

Java在源码中设置Kafka保留时间

蛊毒传说 2023-10-12 16:42:34
我有以下问题。我需要在 Kafka 中为某些选定的主题设置保留时间。我找到了一个解决方案,可以使用以下命令进行设置:kafka-topics --zookeeper localhost:2181 --alter --topic topic-name --config retention.ms=-1我检查了 Kafka 的 Web UI 并确认它已更改。如果可能的话,我想自己在Java中设置保留时间,但我似乎找不到合适的类/配置来设置时间。我以为我可以在 ProducerConfig 类中获取有关保留的信息,但我在那里找不到它。是否可以在 Java 中设置保留时间?如果可以,我该如何完成?提前致谢!
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

这对我有用:)


    private void setRetentionTime(String topicName, int retentionTime) {

        ConfigResource resource = new ConfigResource(Type.TOPIC, topicName);


        Collection<ConfigEntry> entries = new ArrayList<>();

        entries.add(new ConfigEntry(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionTime)));


        Config config = new Config(entries);

        Map<ConfigResource, Config> configs = new HashMap<>();

        configs.put(resource, config);


        AdminClient client = kafkaConfig.createAdminClient();

        client.alterConfigs(configs);

    }


查看完整回答
反对 回复 2023-10-12
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我以前从 Java 知道你可以作为客户端登录。无法更改主题配置。

最近他们在新版本的 Kafka 中引入了这一点,我认为这是可能做到的。

https://kafka.apache.org/10/javadoc/org/apache/kafka/clients/admin/KafkaAdminClient.html#alterConfigs-java.util.Map-org.apache.kafka.clients.admin.AlterConfigsOptions-

我现在的答案听起来有点模糊,但如果你想要完整的答案,你必须更具体。如果您有 Kafka 的确切版本、用于连接到 kafka 的库等,我可以扩展答案...

我认为从应用程序更改服务器端配置不是最好的主意。这是更多基础设施的事情,不应该在运行应用程序时在运行时完成。


查看完整回答
反对 回复 2023-10-12
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信