脈絡:Control Bus 描述了數種監控訊息處理系統健康狀況的作法。系統中每個元件都能定期向控制匯流排發布「心跳」訊息,讓監控機制知道它仍然活躍;心跳訊息還能帶上元件的重要統計(已處理訊息數、處理一則訊息的平均時間、機器 CPU 使用率等)。
簡單的心跳機制偵測不到這種錯誤狀況——它只在元件層級運作,對應用訊息格式一無所知。
解法#
這個模式依賴四個元件:
- Test Data Generator(測試資料產生器)——建立要送給元件測試的訊息。測試資料可以是固定的、由測試資料檔驅動的,或隨機產生的。
- Test Message Injector(測試訊息注入器)——把測試資料插入送往元件的常規資料訊息串流中。它的主要角色是替訊息貼標籤,好把「真的」應用訊息與測試訊息區分開來。
貼標籤可以用插入特殊表頭欄位來達成。
若我們無法控制訊息結構,可以試著用特殊值來標示測試訊息(例如
OrderID = 999999)。但這改變了應用資料的語意——同一個欄位既代表應用資料(實際訂單號),又代表控制資訊(這是測試訊息)。因此這只該當作最後手段。
- Test Message Separator(測試訊息分離器)——從輸出串流中取出測試訊息的結果,通常可以用 Content-Based Router 達成。
- Test Data Verifier(測試資料驗證器)——比對實際結果與預期結果,發現差異就標記例外。依測試資料的性質而定,驗證器可能需要存取原始測試資料。

圖 11-12:Test Message 解法示意
