[ADP-610] 事件排序
概述
本 ADP 定義了使用 CloudEvents 序列擴展來實現事件排序的標準方法。
指導原則
必須(MUST)使用 CloudEvents 序列擴展來實現事件排序。
事件生產者必須(MUST)為需要排序的事件設置
sequence
屬性。sequence
屬性必須(MUST)是非空的、可按字典序排序的字串。sequence
屬性應該(SHOULD)單調遞增且連續。事件消費者應該(SHOULD)能夠根據事件的序列順序處理事件。
CloudEvents 序列擴展
序列擴展為 CloudEvents 添加了一個屬性:
sequence
: 表示事件相對順序的字串值。
帶有 sequence
的 CloudEvent 示例:
json
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "C234-1234-1234",
"time" : "2023-06-01T10:30:00Z",
"sequence": "000000000042",
"data" : {
"message" : "這是一個有序事件"
}
}
實施建議
選擇適當的序列生成策略,確保字典序排序(例如,補零的整數、具有足夠精度的時間戳)。
實現處理亂序事件接收的機制,如緩衝和重新排序。
考慮將
sequence
屬性與source
屬性結合使用,以維護特定事件流內的順序。實現序列間隙或重複的錯誤處理。
為您的特定用例提供清晰的文件,說明
sequence
屬性的語義和有效值。
使用案例
- 金融交易: 確保帳戶交易按正確順序處理。