搜索

12.6. 将消息标头转换为事件记录值

download PDF

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

12.6.1. 示例: Debezium HeaderToValue SMT 的基本配置

要在事件记录中提取消息标头到记录值中,请在连接器的 Kafka Connect 配置中配置 HeaderToValue SMT。您可以配置转换以删除原始标头或复制它们。要从记录中删除标头字段,请将 SMT 配置为使用 move 操作。要在原始记录中保留标头字段,请将 SMT 配置为使用 复制操作。例如,要从事件信息中删除标头 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

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

例 12.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,
            "snapshot": true,
            "db": "postgres",
            "sequence": "[\"24023119\",\"24023128\"]"
            "schema": "public",
            "table": "customers",
            "txId": 555,
            "lsn": 24023128,
            "xmin": null
        },
        "op": "c",
        "ts_ms": 1559033904863
    }
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,
            "snapshot": true,
            "db": "postgres",
            "sequence": "[\"24023119\",\"24023128\"]"
            "schema": "public",
            "table": "customers",
            "txId": 555,
            "lsn": 24023128,
            "xmin": null,
            "id": 100
        },
        "op": "c",
        "ts_ms": 1559033904863,
        "event_timestamp": 1626102708861
    }

12.6.2. 用于配置 HeaderToValue 转换的选项

下表列出了可用于 HeaderToValue SMT 的配置选项。

表 12.6. HeaderToValue SMT 配置选项

属性

描述

类型

default

有效值

重要性

标头

记录中以逗号分隔的标头名称列表,其值要复制或移到记录值。

list

没有默认值

非空列表

high

字段

以逗号分隔的字段名称列表,其顺序与 headers 配置属性中列出的标头名称相同。使用点表示法来指示消息有效负载特定节点中的 SMT 嵌套字段。有关如何将 SMT 配置为使用点表示法的详情,请参考本节前面出现 的示例

list

没有默认值

非空列表

high

操作

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

string

没有默认值

move 或 copy

high

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.