猿问

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

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

kafka-topics --zookeeper localhost:2181 --alter --topic topic-name --config retention.ms=-1

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

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

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

提前致谢!


蛊毒传说
浏览 109回答 1
1回答

狐的传说

这对我有用:)&nbsp; &nbsp; private void setRetentionTime(String topicName, int retentionTime) {&nbsp; &nbsp; &nbsp; &nbsp; ConfigResource resource = new ConfigResource(Type.TOPIC, topicName);&nbsp; &nbsp; &nbsp; &nbsp; Collection<ConfigEntry> entries = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; entries.add(new ConfigEntry(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionTime)));&nbsp; &nbsp; &nbsp; &nbsp; Config config = new Config(entries);&nbsp; &nbsp; &nbsp; &nbsp; Map<ConfigResource, Config> configs = new HashMap<>();&nbsp; &nbsp; &nbsp; &nbsp; configs.put(resource, config);&nbsp; &nbsp; &nbsp; &nbsp; AdminClient client = kafkaConfig.createAdminClient();&nbsp; &nbsp; &nbsp; &nbsp; client.alterConfigs(configs);&nbsp; &nbsp; }

拉风的咖菲猫

我以前从 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 的库等,我可以扩展答案...我认为从应用程序更改服务器端配置不是最好的主意。这是更多基础设施的事情,不应该在运行应用程序时在运行时完成。
随时随地看视频慕课网APP

相关分类

Java
我要回答