我们在 Java 应用程序中使用 Debezium + spring-boot + spring-kafka。 Debezium 代码将自动创建一些 kafka 主题。是否可以使用 spring-kafka 修改这些主题的属性?
我们可以在 application.properties 中设置一些属性或修改 debezium 配置来实现此目的吗?
谢谢!
这取决于 Debezium 是否设置任何属性。如果它没有设置,则当它尝试查看是否存在不匹配时,
KafkaAdmin
中存在错误(我已经打开了一个问题来修复该问题https://github.com/spring-projects/spring-kafka/issues /2832)。
如果它确实设置了任何配置,并且您想更改其中一些配置,那么这应该可以...
spring.kafka.admin.modify-topic-configs=true
@Bean
ApplicationRunner runner(KafkaAdmin admin) {
return args -> {
admin.createOrModifyTopics(TopicBuilder.name("topic1")
.config("retention.bytes", "100000")
.partitions(1)
.replicas(1)
.build());
};
}
如果没有现有属性,并且您迫不及待地等待修复,您可以自己使用
AdminClient
(只需看看 KafkaAdmin
在 checkTopicsForConfigMismatches()
中是如何实现的。