您正在查看 Debezium 未发布版本的文档。
如果您想查看此页面的最新稳定版本,请在此 查看。

HeaderToValue

HeaderToValue SMT 从事件记录中提取指定的头字段,然后将这些头字段复制或移动到事件记录的值中。move 选项在将字段作为负载中的值添加之前,会从头中完全删除这些字段。您可以配置 SMT 来操作原始消息中的多个头。您可以使用点表示法指定要在其中嵌套头字段的负载节点。有关配置 SMT 的更多信息,请参阅以下 示例

示例

要将事件记录中的消息头提取到记录值中,请在连接器的 Kafka Connect 配置中配置 HeaderToValue SMT。您可以配置转换以删除原始头或复制它们。要从记录中删除头字段,请配置 SMT 使用 move 操作。要保留原始记录中的头字段,请配置 SMT 使用 copy 操作。例如,要从事件消息中删除 event_timestampkey 头,请将以下几行添加到您的连接器配置中:

transforms=moveHeadersToValue
transforms.moveHeadersToValue.type=io.debezium.transforms.HeaderToValue
transforms.moveHeadersToValue.headers=event_timestamp,key
transforms.moveHeadersToValue.fields=timestamp,source.id
transforms.moveHeadersToValue.operation=move

以下示例显示了转换应用之前和之后事件记录的头和值。

示例 1. 应用 HeaderToValue SMT 的效果
HeaderToValue 转换处理事件记录之前
在 SMT 处理事件记录之前的头
{
    "header_x": 0,
    "event_timestamp": 1626102708861,
    "key": 100,
}
在 SMT 处理事件记录之前的值
{
        "before": null,
        "after": {
            "id": 1,
            "first_name": "Anne",
            "last_name": "Kretchmar",
            "email": "annek@noanswer.org"
        },
        "source": {
            "version": "2.1.3.Final",
            "connector": "postgresql",
            "name": "PostgreSQL_server",
            "ts_ms": 1559033904863,
            "ts_us": 1559033904863091,
            "ts_ns": 1559033904863091000,
            "snapshot": true,
            "db": "postgres",
            "sequence": "[\"24023119\",\"24023128\"]"
            "schema": "public",
            "table": "customers",
            "txId": 555,
            "lsn": 24023128,
            "xmin": null
        },
        "op": "c",
        "ts_ms": 1559033904863,
        "ts_us": 1559033904863741,
        "ts_ns": 1559033904863741697
    }
HeaderToValue 转换处理事件记录之后
在 SMT 删除指定字段之后的头
{
    "header_x": 0
}
在 SMT 将头字段移动到值之后的记录值
{
        "before": null,
        "after": {
            "id": 1,
            "first_name": "Anne",
            "last_name": "Kretchmar",
            "email": "annek@noanswer.org"
        },
        "source": {
            "version": "2.1.3.Final",
            "connector": "postgresql",
            "name": "PostgreSQL_server",
            "ts_ms": 1559033904863,
            "ts_us": 1559033904863697,
            "ts_ns": 1559033904863697000,
            "snapshot": true,
            "db": "postgres",
            "sequence": "[\"24023119\",\"24023128\"]"
            "schema": "public",
            "table": "customers",
            "txId": 555,
            "lsn": 24023128,
            "xmin": null,
            "id": 100
        },
        "op": "c",
        "ts_ms": 1559033904863,
        "ts_us": 1559033904863631,
        "ts_ns": 1559033904863631584,
        "event_timestamp": 1626102708861
    }

配置选项

下表列出了您可以在 HeaderToValue SMT 中使用的配置选项。

表 1. HeaderToValue SMT 配置选项

属性

描述

Type

Default (默认值)

有效值

重要性

记录中头名称的逗号分隔列表,这些头名称的值将被复制或移动到记录值中。

列表

无默认值

非空列表

字段名称的逗号分隔列表,顺序与 headers 配置属性中列出的头名称相同。使用点表示法指示 SMT 将字段嵌套在消息负载的特定节点内。有关如何配置 SMT 使用点表示法的更多信息,请参阅本主题前面的 示例

列表

无默认值

非空列表

指定以下选项之一: move:: SMT 将头字段移动到事件记录的值中,并从头中删除这些字段。 copy:: SMT 将头字段复制到事件记录的值中,并保留原始头字段。

string

无默认值

move 或 copy