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

gok*_*736 1 java apache-kafka spring-kafka

我有以下问题。我需要在 Kafka 中为某些选定的主题设置保留时间。我找到了一个解决方案,可以使用以下命令进行设置:

kafka-topics --zookeeper localhost:2181 --alter --topic topic-name --config retention.ms=-1
Run Code Online (Sandbox Code Playgroud)

我检查了 Kafka 的 Web UI 并确认它已更改。

如果可能,我想自己在 Java 中设置保留时间,但似乎找不到合适的类/配置来设置时间。我以为我可以在 ProducerConfig 类中获取有关保留的信息,但在那里找不到。

甚至可以在 Java 中设置保留时间,如果可能,我该如何完成?

提前致谢!

gok*_*736 5

这对我有用:)

    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);
    }
Run Code Online (Sandbox Code Playgroud)

  • kafkaConfig 变量未声明 (2认同)