Kafka Connect Transformations - RegexRouter 替换小写主题名称

Kafka Connect Transformations - RegexRouter replacement topic names in lowercase

我们正在尝试在 Kafka Connect 中设置一个连接器 (Debezium),并通过正则表达式转换该连接器生成的所有主题名称。下面的正则表达式正在运行并检测到我们想要的模式,但我们还需要以小写形式创建所有主题名称。

我们试图将其作为 \L$1 放在替换表达式中,但它只是 在我们的主题名称前面打印和 L,例如 LOutbound.Policy 而不是 outbound.policy

有人知道怎么做吗?提前致谢!

这是连接器 curl 命令

curl -i -X PUT http://kafka-alpha-cp-kafka-connect:8083/connectors/kafka-bi-datacontract/config -H "Content-Type: application/json" -d '{
"name": "kafka-bi-datacontract",
"connector.class" : "io.debezium.connector.sqlserver.SqlServerConnector",
"database.hostname" : "ukdb3232123",
"database.server.name" : "ukdb3232123\perf",
"database.port" : "12442",
"database.user" : "KafkaConnect-BI",
"database.password" : "*******",
"database.dbname" : "BeazleyIntelligenceDataContract",
"snapshot.lock.timeout.ms" : "10000000",
"table.whitelist" : "Outbound.Policy,Outbound.Section",
"database.history.kafka.bootstrap.servers" : "kafka-alpha-cp-kafka-headless:9092",
"database.history.kafka.topic": "schema-changes.bidatacontract",
"transforms": "dropTopicPrefix",
"transforms.dropTopicPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",
"transforms.dropTopicPrefix.regex":"^[^.]+.(.*)",
"transforms.dropTopicPrefix.replacement":"\L"
}'

\L\LL 相同。

您需要create/find自己的小写转换。

一旦你这样做了,你就可以做这样的事情

"transforms": "dropTopicPrefix,lowertopic",

"transforms.dropTopicPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",
"transforms.dropTopicPrefix.regex":"^[^.]+.(.*)",
"transforms.dropTopicPrefix.replacement":"",

"transforms.lowerTopic.type":"com.example.foo.LowerCase$Topic",