Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在源代码中设置Kafka保留时间_Java_Apache Kafka_Spring Kafka - Fatal编程技术网

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

Java在源代码中设置Kafka保留时间,java,apache-kafka,spring-kafka,Java,Apache Kafka,Spring Kafka,我有以下问题。我需要在卡夫卡中为某些选定主题设置保留时间。我找到了一个解决方案,可以使用以下命令进行设置: kafka-topics --zookeeper localhost:2181 --alter --topic topic-name --config retention.ms=-1 我检查了卡夫卡的网络用户界面,确认它已被更改 如果可能,我想自己在Java中设置保留时间,但似乎找不到合适的类/配置来设置时间。我以为我可以在ProducerConfig类中获得有关保留的信息,但在那里找不

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

kafka-topics --zookeeper localhost:2181 --alter --topic topic-name --config retention.ms=-1
我检查了卡夫卡的网络用户界面,确认它已被更改

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

甚至可以用Java设置保留时间吗?如果可能的话,我怎样才能做到


提前谢谢

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

最近,卡夫卡的新版本引入了这一点,我认为这是可能的

我现在的答案听起来有点模糊,但如果你想得到完整的答案,你必须更具体一些。如果你有卡夫卡的确切版本,你用来连接卡夫卡的库,等等,我可以扩展答案


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

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

最近,卡夫卡的新版本引入了这一点,我认为这是可能的

我现在的答案听起来有点模糊,但如果你想得到完整的答案,你必须更具体一些。如果你有卡夫卡的确切版本,你用来连接卡夫卡的库,等等,我可以扩展答案

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

这对我来说很有用:)

private void setRetentionTime(字符串topicName,int retentionTime){
ConfigResource资源=新的ConfigResource(Type.TOPIC,topicName);
集合项=新的ArrayList();
添加(新的ConfigEntry(TopicConfig.RETENTION\u MS\u CONFIG,String.valueOf(retentionTime));
配置=新配置(条目);
Map configs=new HashMap();
configs.put(资源,配置);
AdminClient client=kafkanconfig.createAdminClient();
client.alterConfigs(configs);
}
这对我很有用:)

private void setRetentionTime(字符串topicName,int retentionTime){
ConfigResource资源=新的ConfigResource(Type.TOPIC,topicName);
集合项=新的ArrayList();
添加(新的ConfigEntry(TopicConfig.RETENTION\u MS\u CONFIG,String.valueOf(retentionTime));
配置=新配置(条目);
Map configs=new HashMap();
configs.put(资源,配置);
AdminClient client=kafkanconfig.createAdminClient();
client.alterConfigs(configs);
}

我会看看是否能用它解决我的问题。我们需要在运行时动态创建主题。某些主题必须有无限的保留时间。这些主题是用Java创建的。它不必由Java完成,但在创建主题时必须自动完成。如果您有zookeeper,您可能需要检查通过zookeeper的可能性。正如我所说,我不知道你们的环境。看看这个,它涵盖了很多你的主题:我会看看我是否能用它解决我的问题。我们需要在运行时动态创建主题。某些主题必须有无限的保留时间。这些主题是用Java创建的。它不必由Java完成,但在创建主题时必须自动完成。如果您有zookeeper,您可能需要检查通过zookeeper的可能性。正如我所说,我不知道你们的环境。看看这个,它涵盖了您主题的很多内容:Kafkanconfig变量未声明Kafkanconfig变量未声明
    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);
    }