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

发件箱Quarkus扩展

这个功能目前正在酝酿状态,即精确的语义,配置选项等可能会改变在未来修订,根据我们得到的反馈。请让我们知道如果你遇到任何问题时使用这个扩展。

概述

这个扩展的启发发件箱活动路由器单一的消息转换(SMT)。博客文章中讨论可靠的Microservices数据交换与发件箱模式,microservices通常需要彼此交换信息和一个非常好的方法来处理使用发件箱模式结合Debezium发件箱事件路由器SMT。开云体育官方注册网址

下面的图片显示了此模式的总体架构:

发件箱模式

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

开始

为了开始使用Debezium发件箱Quarkus扩展,扩开云体育官方注册网址展需要添加部分Quarkus应用程序如下:

<依赖> < groupId > io.debez开云体育官方注册网址ium < / groupId > < artifactId > debezium-quarkus-outbox < / artifactId > <版本> 1.5.4。最后< /版本> < /依赖>

扩展为应用程序提供了io.开云体育官方注册网址debezium.outbox.quarkus.ExportedEvent接口。我们估计一个应用程序类将实现这个接口,事件将会发出使用javax.enterprise.event.Event类。

ExportedEvent接口参数化允许应用程序指定多个属性所使用的Java类型发出的事件。是很重要的对于一个给定的Quarkus应用程序,所有的实现ExportedEvent接口必须使用相同的参数类型或构建失败就会抛出以来所有事件都将使用相同的底层数据库表。开云体育电动老虎机

例子

下面的代码展示了一个实现的ExportedEvent创建接口代表一个订单:

OrderCreatedEvent.java
公共类OrderCreatedEvent实现ExportedEvent <字符串,JsonNode >{私有静态最终字符串类型=“秩序”;私有静态最终字符串EVENT_TYPE =“OrderCreated”;私人最终长orderId;私人最终JsonNode JsonNode;私人最后即时时间戳;公共OrderCreatedEvent(即时createdAt订单顺序){。orderId = order.getId ();这一点。时间戳= createdAt;这一点。jsonNode = convertToJson(秩序); } @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
@ApplicationScoped公开课OrderService {< ExportedEvent < @ inject事件?,? > >事件;@ transactional公共秩序addOrder(订单顺序){= orderRepository.save顺序(顺序);事件。火(新OrderCreatedEvent (Instant.now(),顺序));返回订单;}}

当应用程序代码触发事件通过调用事件#火(),发件箱扩展将通知事件发生和持续的内容事件变成了发件箱事件表当前事务的范围内。Debe开云体育官方注册网址zium CDC连接器与发件箱事件路由器将监控这个表,负责传送数据使用CDC事件。

看到一个完整的端到端演示,发件箱使用发件箱模式示例说明了两个Quarkus microservice应用程序之间共享数据他们当订单被放置或取消。

配置

发件箱扩展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) not null

字符串

VARCHAR (255) NOT NULL

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

JPA AttributeConverter事件键列。
如。com.company.TheAttributeConverter

字符串

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

事件总类型列的列名。

字符串

aggregatetype

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

聚合的特开云体育电动老虎机定于数据库的列定义类型。
如。varchar (15) not null

字符串

VARCHAR (255) NOT NULL

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

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

字符串

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

事件类型列的列名。

字符串

类型

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

事件类型开云体育电动老虎机的特定于数据库的列定义。
如。varchar (50) not null

字符串

VARCHAR (255) NOT NULL

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

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

字符串

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

事件时间戳列的列名。

字符串

时间戳

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

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

字符串

时间戳不空

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

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

字符串

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

列事件有效负载的列的名称。

字符串

有效载荷

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

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

字符串

VARCHAR (8000)

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

JPA AttributeConverter事件有效负载的列。
如。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连接器无法发射中心事件。开云体育官方注册网址这是用来防止表的底层存储随时间增长。

布尔

真正的

分布式跟踪

扩展支持分布式跟踪。看到跟踪文档为更多的细节。