Debezium日常分享系列之:Debezium 通知

Debezium日常分享系列之:Debezium 通知

  • 一、概论
  • 二、Debezium通知格式
  • 三、Debezium 有关初始快照状态的通知
  • 四、Debezium 有关增量快照进度的通知
  • 五、启用 Debezium 通知
  • 六、访问 Debezium JMX 通知
  • 七、自定义通知渠道
  • 八、应用案例

一、概论

Debezium 通知提供了一种获取有关连接器状态信息的机制。通知可以发送到以下渠道:

  • 接收器通知通道:通过 Connect API 将通知发送到配置的主题。
  • 日志通知通道:通知会附加到日志中。
  • JmxNotificationChannel:通知作为 JMX bean 中的属性公开。
  • 定制:通知将发送到您实施的自定义渠道。

二、Debezium通知格式

通知消息包含以下信息:

属性描述
id分配给通知的唯一标识符。对于增量快照通知,id 与使用执行快照信号发送的相同。
aggregate_type快照类型
type提供有关在aggregate_type 字段中指定的事件的状态信息。
additional_data包含有关通知的详细信息的 Map<String,String>。
timestamp创建通知的时间。 Epoch unix 时间戳(以毫秒为单位)

三、Debezium 有关初始快照状态的通知

以下示例显示了提供初始快照状态的典型通知:

{"id": "5563ae14-49f8-4579-9641-c1bbc2d76f99","aggregate_type": "Initial Snapshot","type": "COMPLETED", "additional_data" : {"connector_name": "myConnector"},"timestamp": "1695817046353"
}

类型字段可以包含以下值之一:

  • STARTED
  • IN_PROGRESS
  • TABLE_SCAN_COMPLETED
  • COMPLETED
  • ABORTED
  • SKIPPED

下表显示了报告初始快照状态的通知中可能存在的不同负载的示例:

  • STARTED
{"id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f","aggregate_type":"Initial Snapshot","type":"STARTED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}
  • IN_PROGRESS
{"id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d","aggregate_type":"Initial Snapshot","type":"IN_PROGRESS","additional_data":{"connector_name":"my-connector","data_collections":"table1, table2","current_collection_in_progress":"table1"},"timestamp": "1695817046353"
}

Mongo 连接器当前不支持字段 data_collection

  • TABLE_SCAN_COMPLETED
   "id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d","aggregate_type":"Initial Snapshot","type":"TABLE_SCAN_COMPLETED","additional_data":{"connector_name":"my-connector","data_collection":"table1, table2","scanned_collection":"table1","total_rows_scanned":"100","status":"SUCCEEDED"},"timestamp": "1695817046353"
}

在前面的示例中,additional_data.status 字段可以包含以下值之一:

SQL_异常:执行快照时发生 SQL 异常。

成功了:快照成功完成。

Mongo 连接器当前不支持字段total_rows_scanned 和data_collection

  • COMPLETED
{"id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f","aggregate_type":"Initial Snapshot","type":"COMPLETED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}
  • ABORTED
{"id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f","aggregate_type":"Initial Snapshot","type":"ABORTED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}
  • SKIPPED
{"id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f","aggregate_type":"Initial Snapshot","type":"SKIPPED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}

四、Debezium 有关增量快照进度的通知

下表显示了报告增量快照状态的通知中可能存在的不同负载的示例:

  • Start
{"id":"ff81ba59-15ea-42ae-b5d0-4d74f1f4038f","aggregate_type":"Incremental Snapshot","type":"STARTED","additional_data":{"connector_name":"my-connector","data_collections":"table1, table2"},"timestamp": "1695817046353"
}
  • Paused
{"id":"068d07a5-d16b-4c4a-b95f-8ad061a69d51","aggregate_type":"Incremental Snapshot","type":"PAUSED","additional_data":{"connector_name":"my-connector","data_collections":"table1, table2"},"timestamp": "1695817046353"
}
  • Resumed
{"id":"a9468204-769d-430f-96d2-b0933d4839f3","aggregate_type":"Incremental Snapshot","type":"RESUMED","additional_data":{"connector_name":"my-connector","data_collections":"table1, table2"},"timestamp": "1695817046353"
}
  • Stopped
{"id":"83fb3d6c-190b-4e40-96eb-f8f427bf482c","aggregate_type":"Incremental Snapshot","type":"ABORTED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}
  • Processing chunk
{"id":"d02047d6-377f-4a21-a4e9-cb6e817cf744","aggregate_type":"Incremental Snapshot","type":"IN_PROGRESS","additional_data":{"connector_name":"my-connector","data_collections":"table1, table2","current_collection_in_progress":"table1","maximum_key":"100","last_processed_key":"50"},"timestamp": "1695817046353"
}
  • Snapshot completed for a table
{"id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d","aggregate_type":"Incremental Snapshot","type":"TABLE_SCAN_COMPLETED","additional_data":{"connector_name":"my-connector","data_collection":"table1, table2","scanned_collection":"table1","total_rows_scanned":"100","status":"SUCCEEDED"},"timestamp": "1695817046353"
}

在前面的示例中,additional_data.status 字段可以包含以下值之一:

EMPTY:该表不包含任何值。

NO_PRIMARY_KEY:无法完成快照;表没有主键。

SKIPPED:无法完成此类表的快照。有关详细信息,请参阅日志。

SQL_EXCEPTION:执行快照时发生 SQL 异常。

SUCCEEDED:快照成功完成。

UNKNOWN_SCHEMA:找不到该表的架构。检查日志中已知表的列表。

  • Completed
{"id":"6d82a3ec-ba86-4b36-9168-7423b0dd5c1d","aggregate_type":"Incremental Snapshot","type":"COMPLETED","additional_data":{"connector_name":"my-connector"},"timestamp": "1695817046353"
}

五、启用 Debezium 通知

要使 Debezium 能够发出通知,请通过设置 notification.enabled.channels 配置属性来指定通知通道列表。默认情况下,以下通知渠道可用:

  • sink
  • log
  • jmx

重要的:要使用接收器通知通道,还必须将 notification.sink.topic.name 配置属性设置为希望 Debezium 发送通知的主题的名称。

六、访问 Debezium JMX 通知

要使 Debezium 能够报告通过 JMX beans 公开的事件,请完成以下配置步骤:

  • 启用 JMX MBean 服务器以公开通知 bean。
  • 将 jmx 添加到连接器配置中的 notification.enabled.channels 属性中。
  • 将首选的 JMX 客户端连接到 MBean 服务器。

通知通过名称为 debezium..management.notifications. 的 bean 的“Notifications”属性公开。

下图显示了报告增量快照开始的通知:

在这里插入图片描述
要放弃通知,请对 bean 调用重置操作。

通知还公开为 debezium.notification 类型的 JMX 通知。要使应用程序能够侦听 MBean 发出的 JMX 通知,请为应用程序订阅通知。

七、自定义通知渠道

通知机制被设计为可扩展的。可以根据需要实施渠道,以最适合的环境的方式传递通知。添加通知通道涉及几个步骤:

  • 为通道创建一个Java项目来实现通道,并添加Debezium Core作为依赖项。
  • 部署通知通道。
  • 通过修改连接器配置,使连接器能够使用自定义通知通道。

配置自定义通知渠道

自定义通知通道是实现 io.debezium.pipeline.notification.channels.NotificationChannel 服务提供者接口 (SPI) 的 Java 类。例如:

public interface NotificationChannel {String name(); 1void init(CommonConnectorConfig config); 2void send(Notification notification); 3void close(); 4
}
  • 频道的名称。要使 Debezium 能够使用该通道,请在连接器的 notification.enabled.channels 属性中指定此名称。
  • 初始化通道所需的特定配置、变量或连接。
  • 在频道上发送通知。 Debezium 调用此方法来报告其状态。
  • 关闭所有分配的资源。 Debezium 在连接器停止时调用此方法。

Debezium 核心模块依赖项

自定义通知通道 Java 项目具有对 Debezium 核心模块的编译依赖项。必须将这些编译依赖项包含在项目的 pom.xml 文件中,如以下示例所示:

<dependency><groupId>io.debezium</groupId><artifactId>debezium-core</artifactId><version>${version.debezium}</version> 
</dependency>

${version.debezium} 表示 Debezium 连接器的版本。

在 META-INF/services/io.debezium.pipeline.notification.channels.NotificationChannel 文件中声明您的实现。

部署自定义通知渠道

先决条件:有一个自定义通知通道 Java 程序。

程序:要将通知通道与 Debezium 连接器结合使用,请将 Java 项目导出到 JAR 文件,然后将该文件复制到包含要与其一起使用的每个 Debezium 连接器的 JAR 文件的目录。

例如,在典型部署中,Debezium 连接器文件存储在 Kafka Connect 目录 (/kafka/connect) 的子目录中,每个连接器 JAR 位于其自己的子目录中 (/kafka/connect/debezium-connector-db2、/kafka /connect/debezium-connector-mysql 等)。要将信号通道与连接器一起使用,请将转换器 JAR 文件添加到连接器的子目录中。

注意:要将自定义通知通道与多个连接器一起使用,必须将通知通道 JAR 文件的副本放置在每个连接器子目录中。

配置连接器以使用自定义通知通道:在连接器配置中,将自定义通知通道的名称添加到 notification.enabled.channels 属性中。

八、应用案例

  • Debezium系列之:实现增量快照incremental技术的详细步骤
  • Debezium系列之:基于数据库信号表和Kafka信号Topic两种技术方案实现增量快照incremental技术的详细步骤
  • Debezium系列之:深入理解临时阻塞快照

更多Debezium实战应用可以参考博主Debezium专栏:

  • Debezium专栏,Debezium实战应用详细总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…

测开基础概念

小王学习录 前言测试1. 什么是测试2. 测试和调试的区别3. 优秀测试人员应该具备的素质 需求1. 需求的定义2. 测试人员眼里的需求 测试用例1. 什么是测试用例(case)2. 什么是Bug 开发测试模型1. 软件的生命周期2. 瀑布模型3. 螺旋模型3. 增量和迭代4. 敏捷开发5. scrum6. 瀑布模…

chromium通信系统-ipcz系统(九)-ipcz系统代码实现-跨Node通信-代理和代理消除

chromium通信系统-ipcz系统(六)-ipcz系统代码实现-跨Node通信-基础通信 一文我们分析了跨Node的基础通信过程。 a进程和b进程通信的过程。 但在程序中a进程将自己打开的一对portal中的一个portal传递给了b进程。由于篇幅问题这个过程我们并没有分析&#xff0c;这篇文章我们就来…

如何使用甘特图进行项目管理?

或许你在工作中或项目启动会议上听说过“甘特图”一词&#xff0c;但对此了解不多。虽然这些图表可能变得相当复杂&#xff0c;但基础知识并不难掌握。通过本文&#xff0c;你将清楚地了解什么是甘特图、何时使用甘特图、创建甘特图的技巧等等。 什么是甘特图&#xff1f; 甘特…

第二十三章 反射(reflection)

一、反射机制&#xff08;重点&#xff09;&#xff08;P711&#xff09; 1. Java Reflection &#xff08;1&#xff09;反射机制允许程序在执行期借助 Reflection API 取得任何类的内部信息&#xff08;比如成员变量、构造器、成员方法等等&#xff09;&#xff0c;并能操作…

虚幻UE 材质-边界混合之PDO像素深度偏移量

2024年的第一天&#xff01;&#xff01;&#xff01;大家新年快乐&#xff01;&#xff01;&#xff01; 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

HAL——点灯

学习目标 掌握hal库开发流程掌握STMCubeMX配置过程掌握API查询和使用方式 学习内容 需求 点灯PE3。 开发流程 新建项目芯片配置编写代码测试调试 项目创建 新建项目 选择芯片。输入自己使用的芯片。 选择芯片版本。 芯片配置 功能配置 这里需求是点灯&#xff0c;配置…

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者&#xff1a;柳下 概述 随着企业规模和数据量的增长&#xff0c;数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂&#xff0c;因此及时捕获和处理这些变化变得至关重要。为了满足这一需求&#xff0c;数据库 CDC&#xff08;Change Data Capture&#xff…

@EnableXXX注解+@Import轻松实现SpringBoot的模块装配

文章目录 前言原生手动装配模块装配概述模块装配的四种方式准备工作声明自定义注解 导入普通类导入配置类导入ImportSelector导入ImportBeanDefinitionRegistrar 总结TODO后续--条件装配 前言 最早我们开始学习或接触过 SSH 或者 SSM 的框架整合&#xff0c;大家应该还记得那些…

Redis 与 Spring: 解决序列化异常的探索之旅

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)

一、本文介绍 本文给大家带来的改进机制是ACmix自注意力机制的改进版本&#xff0c;它的核心思想是&#xff0c;传统卷积操作和自注意力模块的大部分计算都可以通过1x1的卷积来实现。ACmix首先使用1x1卷积对输入特征图进行投影&#xff0c;生成一组中间特征&#xff0c;然后根…

ant-design-vue的form表单全局禁用不生效

文章目录 一、问题二、解决2.1、4.0之前的版本2.2、4.0开始的版本 三、最后 一、问题 ​ 实际使用ant-design-vue在开发表单的时候或许会遇到编辑与查看的需求&#xff0c;但是查看的时候表单不允许编辑&#xff0c;ant-design-vue的官方是没有像element一样提供全局disabled属…

Tomcat 安装和运行教程

文章目录 一、Tomcat 安装1.1 选择合适的 Tomcat 版本1.2 下载 Tomcat1.3 配置环境变量 二、 运行 Tomcat2.1 启动 Tomcat2.2 关闭 Tomcat 参考资料 一、Tomcat 安装 1.1 选择合适的 Tomcat 版本 Apache Tomcat 是 Jakarta EE&#xff08;正式JavaEE&#xff09;技术子集的开…

Java经典框架之SpringBoot

SpringBoot Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. SpringBoot基础 2. Spring…

第7课 利用FFmpeg将摄像头画面与麦克风数据合成后推送到rtmp服务器

上节课我们已经拿到了摄像头数据和麦克风数据&#xff0c;这节课我们来看一下如何将二者合并起来推送到rtmp服务器。推送音视频合成流到rtmp服务器地址的流程如下&#xff1a; 1.创建输出流 //初始化输出流上下文 avformat_alloc_output_context2(&outFormatCtx, NULL, &…

杜笙MB-115up抛光树脂(出水18兆欧)

TULSIONMB-115UP是一种高阶核子级抛光树脂&#xff0c;由核子级强酸型阳离子TulsimerMB115和强碱阴离子交换树脂A33按一定比例混合而成。这种树脂具有独特的结构和性能&#xff0c;能够有效地去除材料表面的污渍和杂质&#xff0c;提高材料的表面质量和光泽度。 首先&#xff0…

【Spring实战】15 Logback

文章目录 1. 依赖2. 配置3. 打印日志4. 启动程序5. 验证6. 调整日志级别7. 代码详细总结 Spring 作为一个现代化的 Java 开发框架&#xff0c;提供了很多便利的功能&#xff0c;其中包括灵活而强大的日志记录。本文将介绍如何结合 Spring 和 Logback 配置和使用日志&#xff0c…

基于mediapipe的人体姿态估计模型——没有GPU依然速度飞起

关于人体姿态检测模型,我们前期也介绍过了很多相关的模型,比如基于Yolo-NAS的姿态检测以及基于YOLOv8的人体姿态检测,而人体姿态估计一直是计算机视觉任务中比较重要的一个模型。但是基于YOLO系列的人体姿态检测模型需要较大的算力,且很难在CPU模型上快速的运行。 基于medi…

HTML5 和 CSS3 新特性(常用)

HTML5 的新特性 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这 些新特性。 HTML…

【二叉树的顺序结构及实现一-堆】

文章目录 一、二叉树的顺序结构二、堆的概念及结构三、堆的实现(以小堆为例)1、堆的结构体2、堆的初始化->void HeapInit(HP* hp);3、堆的销毁->void HeapDestroy(HP* hp);4、堆的判空->bool HeapEmpty(HP* hp);5、取堆顶的数据->HPDataType HeapTop(HP* hp);6、堆…