You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus结合Debezium实现发件箱模式:如何为发件箱表添加自定义列

解决步骤

1. 先排查JPA持久化问题

你首先要确认新增的自定义列已经被正确写入Postgres的发件箱表,这一步和Debezium配置无关,是Quarkus发件箱扩展的实体映射问题:

  • 在你自定义的发件箱实体类中,添加和数据库自定义列对应的字段,添加@Column注解完成字段映射,同时补全getter/setter方法
  • 调用event.fire方法时,主动给该自定义字段赋值
  • 触发事件后直接查询数据库发件箱表,确认该列已经有对应值,再继续配置Debezium属性

2. 配置table.fields.additional.placement属性

如果数据库中该字段已经有值,但Debezium捕获的事件中没有该字段,在application.properties中按如下规则配置即可:
Quarkus发件箱扩展的该属性前缀为quarkus.debezium-outbox,属性值格式为自定义列名:放置位置[:别名],放置位置可选三个值:

  • header:将字段放到Debezium事件的头信息中
  • envelope:将字段放到Debezium事件的根结构下
  • payload:将字段放到Debezium事件的业务载荷结构中

示例配置如下:

# 单个自定义列配置:列名为biz_id,放到事件头,别名为biz_id
quarkus.debezium-outbox.table.fields.additional.placement=biz_id:header:biz_id

# 多个自定义列配置:用英文逗号分隔即可
quarkus.debezium-outbox.table.fields.additional.placement=biz_id:header:biz_id,order_type:payload:order_type

3. 验证配置

重启应用后触发发件箱事件,查看Debezium输出的事件结构,即可看到自定义字段已经被添加到指定位置。

内容的提问来源于stack exchange,提问作者Pasquale Forte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:06:05