跳转至主要内容
版本: 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 定义的数据格式,安全可靠地将事件推送给目标消费者。