当前位置: 首页 > 知识库问答 >
问题:

Javakafka adminClient主题配置。配置值被覆盖

刘浩思
2023-03-14

尝试使用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个答案

祁杰
2023-03-14

您的逻辑工作不正常,因为您调用了Map。用同一个键放置()几次。因此,只保留最后一个条目。

指定多个主题配置的正确方法是将它们添加到ConfigEntry对象中。只有在将ConfigEntry添加到Map之后。

例如:

// Your Topic Resource
ConfigResource cr = new ConfigResource(Type.TOPIC, "mytopic");

// Create all your configurations
Collection<ConfigEntry> entries = new ArrayList<>();
entries.add(new ConfigEntry(TopicConfig.SEGMENT_BYTES_CONFIG, String.valueOf(segmentbytes)));
entries.add(new ConfigEntry(TopicConfig.RETENTION_BYTES_CONFIG, String.valueOf(retentionBytes)));
...

// Create the Map
Config config = new Config(entries);
Map<ConfigResource, Config> configs = new HashMap<>();
configs.put(cr, config);

// Call alterConfigs()
admin.alterConfigs(configs);
 类似资料:
  • 此配置适用于所有 基本主题。 常用配置 日间模式 - 夜间模式 classic 主题默认提供了对日间模式和夜间模式的支持,并在导航条上提供了切换开关。 通过以下配置可以自定义各模式:docusaurus.config.js module.exports = { // ... themeConfig: { // ... colorMode: { // "

  • 我已经编写了许多通过RESTAPI调用进行通信的服务。这些服务可以配置为使用HTTP或HTTPS。任何给定的客户端都具有定义到服务器的连接的安全配置。“默认”配置属性由应用程序中的值设置。yml在这一点上效果很好。 然而,我逐渐意识到,这在更现实的情况下并不适用。问题是,我试图设置特定的参数,例如启动客户端时的服务器主机/端口,而我设置的值被忽略。 例如: 服务A(客户端)将出于某种目的与服务B(

  • 配置插件 暂时只支持配合vux-loader使用。 注意的是主题文件不能引入其他less文件,只能为简单变量列表。 请配置vux-loader的less-theme插件,指定用以覆盖的less文件路径: { name: 'less-theme', path: 'src/styles/theme.less' // 相对项目根目录路径 } 可配置颜色 源码地址:https://github.

  • 我使用的是Spring4.3.x。 我看过很多相关的帖子,但没有一篇给我答案。如有任何帮助,我们将不胜感激。

  • 我们在堆栈中使用Kafka、Kafka连接和模式注册表。版本为2.8.1(融合6.2.1)。我们使用Kafka connect的配置(key.converter和value.converter),其值为:io.confluent.connect.avro.AvroConverter。 它自动注册主题的新模式。但有一个问题,AvroConverter没有为新模式指定主题级兼容性,当我们试图通过RES

  • 我试图覆盖Archaius为线程池提供的默认配置(如corepool大小、最大池大小、队列大小等)。但不知何故,它并没有起到作用。下面是我在application.yml文件中的配置。 Hystrix:命令:QueryTimeOutHandler:执行:隔离:线程:TimeOutInMilliseconds:600000线程池:QueryTimeOutHandler:CoreSize:200 Ma