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
当消费者需要订阅事件时,可以通过事件规则配置过滤和转换信息,并将事件推送到指定的接收端。因此,事件规则包含三个部分:事件过滤 + 事件转换 + 事件目标。

FilterPattern
通过使用事件过滤模式,我们可以对事件总线上的事件进行过滤,仅推送目标接收端需要的事件,从而减少不必要的开销,并减轻消费者目标接收端的压力。目前,EventBridge 支持以下事件过滤能力:
- 指定值匹配
- 前缀匹配
- 后缀匹配
- 排除匹配
- 数值匹配
- 数组匹配
- 以及复杂的组合逻辑匹配
(详情将在其他文章中介绍)
Transform
事件生产者的事件可能会被多个消费者订阅,但不同消费者所需的数据格式往往不同。在这种情况下,需要将生产者产生的事件转换为消费者接收端需要的事件格式。目前,EventBridge 支持以下事件转换能力:
- 完整事件:不做转换,直接传递原始的 CloudEvents;
- 部分事件:通过 JsonPath 语法从 CloudEvents 中提取需要传递给事件目标的内容;
- 常量:事件仅作为触发器,传递的内容为常量;
- 模板转换器:通过模板定义,灵活渲染传递的事件格式。
(详情请见其他文章)
EventTarget
事件目标接收端是 EventBridge 架构中的事件消费者。在该架构中,消费者只需设计自己的业务模型并提供一个通用的 API(该 API 可用于接收事件,也可用于前端管理操作)。随后,EventBridge 将根据 API 定义的数据格式,安全可靠地将事件推送给目标消费者。