RocketMQ EventBridge 核心概念
了解 EventBridge 中的核心概念有助於我們更好地分析和使用 EventBridge。本文重點介紹 EventBridge 中包含的術語
- EventSource:事件的來源。用於管理傳送至 EventBridge 的事件,所有傳送至 EventBridge 的事件都必須標記來源名稱資訊,對應於 CloudEvent 事件主體中的來源欄位。
- EventBus:事件匯流排。用於儲存傳送至 EventBridge 的事件。
- EventRule:事件規則。當使用者需要訂閱事件時,他們可以透過規則設定過濾和轉換資訊,將事件推播至指定的目標端點。
- FilterPattern:事件過濾模式,用於設定規則中目標端點的過濾。
- Transform:事件轉換,將事件格式轉換為目標端點所需的資料格式。
- EventTarget:事件的目標端點,也就是實際的事件使用者。
接下來,我們將更詳細地說明這些概念。
EventSource
事件來源表示事件的來源,用於描述事件類別,通常與微服務系統一一對應。例如:交易事件來源、出勤事件來源等。事件來源是事件的大分類,單一事件來源通常包含多種類型的事件(類型),例如交易事件來源可能包含:訂單事件、付款事件、退款事件等。
此外,值得注意的是,事件來源不用於描述導致事件的實體。相反,在 CloudEvent 中,我們通常使用 subject 來表示導致事件的實體資源。事件來源類似於市場經濟百貨公司的類別劃分,例如生鮮食品區、生活必需品區、家電區等。在事件中心「百貨公司」中,我們可以透過事件來源快速找到所需的事件。
EventBus
事件總線是事件儲存的地方,它可以有多種實作,包括 Local、RocketMQ、Kafka 等。
事件產生器發送事件時,必須指定事件總線。事件總線是 EventBridge 中的一等公民,所有其他資源在事件總線周圍形成邏輯隔離,也就是說:事件來源和事件規則必須屬於特定事件總線。不同事件總線下的事件來源和事件規則可以有相同的名稱,但同一個事件總線下的事件來源和規則必須有唯一的名稱。
EventRule
消費者需要訂閱事件時,可以透過事件規則來配置過濾和轉換資訊,並將事件推送到指定的目標端點。因此,事件規則包含三部分:事件過濾 + 事件轉換 + 事件目標。
FilterPattern
透過使用事件過濾模式,我們可以在事件總線上過濾事件,只推送目標端點需要的事件,從而減少不必要的開啟,減輕消費者目標端點的壓力。目前 EventBridge 支援以下事件過濾能力
- 指定值匹配
- 前綴匹配
- 後綴匹配
- 排除匹配
- 數字匹配
- 陣列匹配
- 以及複雜的組合邏輯匹配
(詳細內容將在其他文章中介紹)
Transform
事件產生器的事件可能被多個消費者訂閱,但不同消費者需要的資料格式往往不同。這種情況下,有必要將產生器產生的事件轉換成消費者目標端需要的事件格式。目前 EventBridge 支援以下事件轉換能力
- 完整事件:不轉換,直接傳遞原始的 CloudEvents;
- 部分事件:從 CloudEvents 中透過 JsonPath 語法萃取出需要傳遞到事件目標的內容;
- 常數:事件只作為觸發,傳遞的內容為常數;
- 範本轉換器:透過定義範本,彈性地渲染傳遞的事件格式。
(詳細內容將在其他文章中介紹)
EventTarget
事件目標是 EventBridge 架構中的事件使用者。在這個架構中,使用者只需設計自己的商業模式並提供一個共用 API(此 API 可用於接收事件,也可進行前端管理操作)。然後 EventBridge 會根據 API 定義的資料格式,安全且可靠地將事件推送到目標使用者。