您正在查看过时的Debezium版本的文档。开云体育官方注册网址
如果您想查看本页最新的稳定版本,请前往在这里

发件箱夸克扩展

该功能目前处于孵化状态,即准确的语义,配置选项等可能会根据我们收到的反馈在未来的版本中改变。请让我们知道,如果你遇到任何问题,而使用这个扩展。

概述

这个扩展的灵感来自发件箱事件路由器单消息转换(SMT)。正如博客文章中讨论的那样使用发件箱模式进行可靠的微服务数据交换在美国,微服务通常需要彼此交换信息,而处理这种情况的一个很好的方法是使用发件箱模式结合Debezium的发件箱事件路由器SMT。开云体育官方注册网址

下图显示了该模式的整体架构:

发件箱模式

发件箱扩展的目标是提供一个Quarkus应用程序使用可重用的、高度可配置的组件,该组件促进了与Debezium的CDC连接器管道配对的发件箱模式的使用,从而与所述数据的任何消费者可靠且异步地共享数据。开云体育官方注册网址

开始

为了开始使用Debezium Outbox Quarku开云体育官方注册网址s扩展,需要将扩展添加为Quarkus应用程序的一部分,如下所示:

 io.开云体育官方注册网址debezium debezium-quarku -outbox 1.4.2. .最终版本> < / > < /依赖

扩展为应用程序提供io.开云体育官方注册网址debezium.outbox.quarkus.ExportedEvent接口。类将实现此接口,并且事件将使用javax.enterprise.event.Event类。

ExportedEvent接口被参数化,以允许应用程序指定由事件发出的几个属性所使用的Java类型。重要的是,对于给定的夸克应用程序,所有的实现ExportedEvent接口必须使用相同的参数类型,否则将引发构建失败,因为所有事件都将使用相同的底层数据库表。开云体育电动老虎机

例子

方法的实现ExportedEvent接口,表示已创建的订单:

OrderCreatedEvent.java
公共类OrderCreatedEvent实现了ExportedEvent {private static final String TYPE = "Order";private static final String EVENT_TYPE = "OrderCreated";private final long orderId;private final JsonNode;即时时间戳;public OrderCreatedEvent(即时createdAt,订单订单){此。orderId = order.getId();这一点。时间戳= createdAt;这一点。jsonNode = convertToJson(order); } @Override public String getAggregateId() { return String.valeuOf(orderId); } @Override public String getAggregateType() { return TYPE; } @Override public JsonNode getPayload() { return jsonNode; } @Override public String getType() { return EVENT_TYPE; } @Override public Instant getTimestamp() { return timestamp; } }

下面的示例说明了OrderService它发出OrderCreatedEvent

OrderService.java
@应用程序作用域的公共类OrderService{@注入事件< export tedevent >事件;@事务性公共订单addOrder(订单订单){订单= orderRepository.save(订单);事件。fire(new OrderCreatedEvent(Instant.now(), order));返回订单;}}

当应用程序代码通过调用触发事件时事件#火()时,发件箱扩展将收到事件发生的通知,并将事件的内容持久化到当前事务范围内的发件箱事件表中。Debe开云体育官方注册网址zium CDC连接器将与发件箱事件路由器一起监视该表,并将负责使用CDC事件转发数据。

要查看完整的端到端演示,请使用发件箱下面的示例演示了两个Quarkus微服务应用程序在下达或取消订单时使用发件箱模式在它们之间共享数据。

配置

可以通过在Quarkus中设置选项来配置发件箱扩展application.properties文件。该扩展可以使用默认配置开箱即用,但此配置可能并不适用于每种情况。

构建时配置选项

配置属性

类型

默认的

quarkus.开云体育官方注册网址debezium-outbox.table-name

创建发件箱表时要使用的表名。

字符串

OutboxEvent

quarkus.开云体育官方注册网址debezium-outbox.id.name

事件id列的列名。
如。uuid

字符串

id

quarkus.开云体育官方注册网址debezium-outbox.id.column-definition

事件id开云体育电动老虎机列的数据库特定列定义。
如。Uuid不为空

字符串

Uuid不为空

quarkus.开云体育官方注册网址debezium-outbox.aggregate-id.name

事件键列的列名。

字符串

aggregateid

quarkus.开云体育官方注册网址debezium-outbox.aggregate-id.column-definition

聚合id开云体育电动老虎机的数据库特定列定义。
如。Varchar(50)不为空

字符串

Varchar(255)不为空

quarkus.开云体育官方注册网址debezium-outbox.aggregate-id.converter

事件键列的JPA attributecconverter。
如。com.company.TheAttributeConverter

字符串

quarkus.开云体育官方注册网址debezium-outbox.aggregate-type.name

事件聚合类型列的列名。

字符串

aggregatetype

quarkus.开云体育官方注册网址debezium-outbox.aggregate-type.column-definition

聚合类型开云体育电动老虎机的数据库特定列定义。
如。Varchar(15)不为空

字符串

Varchar(255)不为空

quarkus.开云体育官方注册网址debezium-outbox.aggregate-type.converter

事件聚合类型列的JPA attributecconverter。
如。com.company.TheAttributeConverter

字符串

quarkus.开云体育官方注册网址debezium-outbox.type.name

事件类型列的列名。

字符串

类型

quarkus.开云体育官方注册网址debezium-outbox.type.column-definition

事件类型开云体育电动老虎机的数据库特定列定义。
如。Varchar(50)不为空

字符串

Varchar(255)不为空

quarkus.开云体育官方注册网址debezium-outbox.type.converter

事件类型列的JPA attributecconverter。
如。com.company.TheAttributeConverter

字符串

quarkus.开云体育官方注册网址debezium-outbox.timestamp.name

事件时间戳列的列名。

字符串

时间戳

quarkus.开云体育官方注册网址debezium-outbox.timestamp.column-definition

事件时间开云体育电动老虎机戳的特定于数据库的列定义。
如。时间戳不为空

字符串

时间戳不为空

quarkus.开云体育官方注册网址debezium-outbox.timestamp.converter

事件时间戳列的JPA attributecconverter。
如。com.company.TheAttributeConverter

字符串

quarkus.开云体育官方注册网址debezium-outbox.payload.name

事件有效负载列的列名。

字符串

有效载荷

quarkus.开云体育官方注册网址debezium-outbox.payload.column-definition

事件有效开云体育电动老虎机负载的数据库特定列定义。
如。文本不为空

字符串

VARCHAR (8000)

quarkus.开云体育官方注册网址debezium-outbox.payload.converter

事件有效负载列的JPA attributecconverter。
如。com.company.TheAttributeConverter

字符串

quarkus.开云体育官方注册网址debezium-outbox.tracingspancontext.name

跟踪跨度上下文列的列名。

字符串

tracingspancontext

quarkus.开云体育官方注册网址debezium-outbox.tracingspancontext.column-definition

trac开云体育电动老虎机ingspancontext的数据库特定列定义。
如。文本不为空

字符串

VARCHAR (256)

生成时配置默认值将与发件箱事件路由器SMT一起使用。当不使用默认值时,请确保SMT配置匹配。

运行时配置选项

配置属性

类型

默认的

quarkus.开云体育官方注册网址debezium-outbox.remove-after-insert

在插入发件箱条目后是否删除。

删除条目不会影响Debezium连接器发射CDC事件的能力。开云体育官方注册网址这是一种防止表的底层存储空间随时间增长的方法。

布尔

真正的

分布式跟踪

扩展支持分布式跟踪。看到跟踪文档欲知详情。