Debezium 连接器过滤器 "partly" 正在工作

Debezium Connector filter "partly" working

我们有一个可以正常工作的 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
  }
}

可能是什么问题?即使我不认为它会起作用,我也尝试过改变条件的位置。没有错误代码,连接器是 运行.

好的解决了。我正在使用预先创建的配置。在阅读文档时,我发现 "skipped.operations": "u,d,r" 不是 Oracle 配置。它在 MySQL 文档中。所以,我删除了它并更改了连接器名称(缓存数据经常会导致问题)。看起来它现在正在工作。