发件箱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
创建接口代表一个订单:
公共类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
:
@ApplicationScoped公开课OrderService {< ExportedEvent < @ inject事件?,? > >事件;@ transactional公共秩序addOrder(订单顺序){= orderRepository.save顺序(顺序);事件。火(新OrderCreatedEvent (Instant.now(),顺序));返回订单;}}
当应用程序代码触发事件通过调用事件#火()
,发件箱扩展将通知事件发生和持续的内容事件变成了发件箱事件表当前事务的范围内。Debe开云体育官方注册网址zium CDC连接器与发件箱事件路由器将监控这个表,负责传送数据使用CDC事件。
看到一个完整的端到端演示,发件箱使用发件箱模式示例说明了两个Quarkus microservice应用程序之间共享数据他们当订单被放置或取消。
配置
发件箱扩展Quarkus可以通过设置配置选项application.properties
文件。扩展工作开箱即用的默认配置,但此配置可能不是适合所有情形。
构建时间配置选项
配置属性 |
类型 |
默认的 |
|
字符串 |
OutboxEvent |
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
|
字符串 |
|
构建时间配置默认值将与发件箱事件路由器SMT开箱即用的。当不使用默认值,确保SMT配置匹配。 |
运行时配置选项
配置属性 |
类型 |
默认的 |
|
布尔 |
真正的 |
分布式跟踪
扩展支持分布式跟踪。看到跟踪文档为更多的细节。