跳到主要内容
版本: 5.0

RocketMQ EventBridge 核心概念

理解 EventBridge 中的核心概念有助于我们更好地分析和使用 EventBridge。本文重点介绍 EventBridge 中包含的术语。

  • EventSource:事件的来源。用于管理发送到 EventBridge 的事件,所有发送到 EventBridge 的事件都必须标记来源名称信息,对应 CloudEvent 事件体中的 source 字段。
  • EventBus:事件总线。用于存储发送到 EventBridge 的事件。
  • EventRule:事件规则。当消费者需要订阅事件时,可以通过规则配置筛选和转换信息,将事件推送到指定的目标端点。
  • FilterPattern:事件过滤模式,用于在规则中配置目标端点的过滤。
  • Transform:事件转换,将事件格式转换为目标端点所需的数据格式。
  • EventTarget:事件的目标端点,即实际的事件消费者。

接下来,我们将更详细地阐述这些概念。

EventSource

事件源代表事件的起源,用于描述一类事件,通常与微服务系统一一对应。例如:交易事件源、考勤事件源等。事件源是对事件进行的大类划分,单个事件源往往包含多种事件类型(type),例如交易事件源可能包含:订单事件、支付事件、退款事件等。

另外,需要注意的是,事件源不是用来描述导致事件发生的实体,在 CloudEvent 中,我们通常用 subject 来表示导致事件发生的实体资源。事件源类似于市场经济百货大楼的大类划分,例如生鲜区、日用品区、家电区等,在事件中心“百货大楼”中,我们可以通过事件源快速找到我们需要的事件。

EventBus

事件总线是事件存储的地方,可以有多种实现,包括 Local、RocketMQ、Kafka 等。

当事件生产者发送事件时,必须指定事件总线。事件总线是 EventBridge 中的一等公民,所有其他资源都围绕事件总线形成逻辑隔离,即:事件源和事件规则都必须属于一个特定的事件总线。不同事件总线下的事件源和事件规则可以同名,但同一事件总线下的事件源和规则必须具有唯一的名称。

EventRule

当消费者需要订阅事件时,可以通过事件规则配置筛选和转换信息,并将事件推送到指定的目标端点。因此,事件规则包含三部分:事件过滤 + 事件转换 + 事件目标。

img_1.png

FilterPattern

通过使用事件过滤模式,我们可以对事件总线上的事件进行过滤,只将目标端点需要的事件推送到目标端点,从而减少不必要的开启,减轻消费者目标端点的压力。目前 EventBridge 支持以下事件过滤能力:

  • 指定值匹配
  • 前缀匹配
  • 后缀匹配
  • 排除匹配
  • 数值匹配
  • 数组匹配
  • 以及复杂的组合逻辑匹配

(详情将在其他文章中介绍)

Transform

事件生产者的事件可能会被多个消费者订阅,但不同消费者所需的数据格式往往不同。在这种情况下,需要将生产者产生的事件转换为消费者目标端所需的事件格式。目前 EventBridge 支持以下事件转换能力:

  • 完整事件:不进行转换,直接投递原始 CloudEvents;
  • 部分事件:通过 JsonPath 语法从 CloudEvents 中提取需要投递到事件目标的内容;
  • 常量:事件仅作为触发器,投递内容为常量;
  • 模板转换器:通过模板的定义,灵活渲染投递事件的格式。

(详情见其他文章)

EventTarget

事件目标是 EventBridge 架构中的事件消费者。在该架构中,消费者只需要设计自己的业务模型并提供一个通用 API(该 API 既可用于接收事件,也可用于前端管理操作)。EventBridge 将根据 API 定义的数据格式安全可靠地将事件推送到目标消费者。