我们有一个debezium连接器,它可以正常工作,没有任何错误。应用了两个过滤条件,其中一个按预期工作,但另一个似乎没有效果。以下是配置的重要部分:
"connector.class": "io.debezium.connector.oracle.OracleConnector",
"transforms.filter.topic.regex": "topicname",
"database.connection.adapter": "logminer",
"transforms": "filter",
"schema.include.list": "xxxx",
"transforms.filter.type": "io.debezium.transforms.Filter",
"transforms.filter.language": "jsr223.groovy",
"tombstones.on.delete": "false",
"transforms.filter.condition": "value.op == "c" && value.after.QUEUELOCATIONTYPE == 5",
"table.include.list": "xxxxxx",
"skipped.operations": "u,d,r",
"snapshot.mode": "initial",
"topics": "xxxxxxx"
正如你所看到的,我们想要得到的记录有op作为";c";以及";QUEUELOCATIONTYPE";如5。在kafka主题中,所有记录的op字段都是";c";。但第二个条件不起作用。存在QUEUELOCATIONTYPE为2,3,4等的记录。下面给出了一个样本记录。
"payload": {
"before": null,
"after": {
"EVENTOBJECTID": "749dc9ea-a7aa-44c2-9af7-10574769c7db",
"QUEUECODE": "STDQSTDBKP",
"STATE": 6,
"RECORDDATE": 1638964344000,
"RECORDREQUESTOBJECTID": "32b7f617-60e8-4020-98b0-66f288433031",
"QUEUELOCATIONTYPE": 4,
"RETRYCOUNT": 0,
"RECORDCHANNELCODE": null,
"MESSAGEBROKERSERVERID": 1
},
"op": "c",
"ts_ms": 1638953572392,
"transaction": null
}
}
可能是什么问题?尽管我认为这不会奏效,但我还是试着改变了条件的位置。没有错误代码,连接器正在运行。
Ok解决了这个问题。我使用了一个预先创建的配置。在阅读文档时,我发现"skipped.operations": "u,d,r"
不是Oracle配置。它在MySQL文档中。因此,我删除了它并更改了连接器名称(缓存的数据经常会导致问题(。看起来它现在起作用了。