Debezium Server的application.properties中如何正确用变量自定义Topic名称
解决方案
你遇到的报错根因是Debezium Server基于Spring Boot开发,Spring Boot加载application.properties时会默认解析所有${}格式的配置占位符,你配置的${routedByValue}还没传递到Debezium的Outbox转换逻辑,就被Spring Boot提前解析,找不到对应配置就抛出NoSuchElementException。省略该配置时没有占位符,不会触发Spring的解析逻辑,因此运行正常。
修复方法
使用两个$对占位符做转义即可,Spring Boot解析时会自动把$$转换为单个$,最终传递给Debezium的就是符合要求的变量格式。
正确配置示例如下:
debezium.transforms.outbox.route.by.field=aggregate_type # 用$$转义避免Spring Boot提前解析占位符 debezium.transforms.outbox.route.topic.replacement=myservice.$${routedByValue}
注意事项
- 配置项正确名称为
route.topic.replacement,不要漏写末尾的ment,否则配置不会生效。 - 该配置生效后,生成的Topic名称会按照
myservice.<aggregate_type字段取值>的规则生成,完全满足自定义Topic名称的需求。
内容的提问来源于stack exchange,提问作者Dazfl
相关产品推荐
相关产品推荐

