Java Kafka adminClient主题配置。配置值被覆盖

时间:2019-01-03 15:02:01

标签: java apache-kafka

在尝试使用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);

我希望该主题正确地具有所有给定的配置值。

1 个答案:

答案 0 :(得分:0)

您的逻辑无法正常工作,因为您使用相同的键多次调用NavigableString。因此,仅保留最后一个条目。

指定多个主题配置的正确方法是将它们添加到.string对象中。仅在将Map.put()添加到ConfigEntry之后。

例如:

ConfigEntry