在尝试使用java kafka adminClient配置新创建的kafka主题时,值将被覆盖。
我尝试使用控制台命令设置相同的主题配置,并且它可以正常工作。不幸的是,当我尝试Java代码时,某些值会发生冲突并被覆盖。
ConfigResource resource = new ConfigResource(ConfigResource.Type.TOPIC, topicName);
Map<ConfigResource, Config> updateConfig = new HashMap<>();
// update retention Bytes for this topic
ConfigEntry retentionBytesEntry = new ConfigEntry(TopicConfig.RETENTION_BYTES_CONFIG, String.valueOf(retentionBytes));
updateConfig.put(resource, new Config(Collections.singleton(retentionBytesEntry)));
// update retention ms for this topic
ConfigEntry retentionMsEntry = new ConfigEntry(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionMs));
updateConfig.put(resource, new Config(Collections.singleton(retentionMsEntry)));
// update segment Bytes for this topic
ConfigEntry segmentBytesEntry = new ConfigEntry(TopicConfig.SEGMENT_BYTES_CONFIG, String.valueOf(segmentbytes));
updateConfig.put(resource, new Config(Collections.singleton(segmentBytesEntry)));
// update segment ms for this topic
ConfigEntry segmentMsEntry = new ConfigEntry(TopicConfig.SEGMENT_MS_CONFIG, String.valueOf(segmentMs));
updateConfig.put(resource, new Config(Collections.singleton(segmentMsEntry)));
// Update the configuration
client.alterConfigs(updateConfig);
我希望该主题正确地具有所有给定的配置值。
答案 0 :(得分:0)
您的逻辑无法正常工作,因为您使用相同的键多次调用NavigableString
。因此,仅保留最后一个条目。
指定多个主题配置的正确方法是将它们添加到.string
对象中。仅在将Map.put()
添加到ConfigEntry
之后。
例如:
ConfigEntry