BAM是Camel一個特殊的組件,用來監控消息的路由質量,(消息在某個endPoint的處理時間是否超時,是否正確到達某個endPoint).ui
BAM的設置以下google
1.1.1 在業務路由中增長監控的endPointspa
若是要對某個endPoint監控,則在此endPoint先後增長兩個endPoint供監控使用.在本項目中對訂單拆分bean,和採購單合成bean作監控.則在他們之間增長三個endPoint(direct:monitor-A/B/C)以下圖:.net
1.1.2 定義監控路由code
增長監控路由定義類BAMRouteBuilder,繼承ProcessBuilder.繼承
在configure中:ip
對前面增長的監控節點定義ActivityBuilder,要指定endPoint,定義name,指明消息關聯ID,ci
消息關聯ID是用來標識兩個監控節點的消息是不是同一的消息.路由
1.1.3 定義監控規則get
定義消息從前一個節點到達後一節點所指望的時間.
定義消息處理時間超過閥值時發送告警消息.
以下圖:指望消息從監控點A到達監控點B在一秒中以內(即1s以內對訂單數據拆分處理完成)
如過超過5s則發送告警消息到控制檯.
1.1.4 BAM監控數據記錄
BAM會對每一個消息通過每一個監控點時產生一條記錄,記錄消息到達監控點的指望到達時間,超時時間,是否收到消息等信息。
1.1.5 監控關注數據
CAMEL_ACTIVITYSTATE中ESCALATIONLEVEL 爲0且當前時間大於指望時間TIMEEXPECTED的數據爲超時數據,需關注:
若是數據符合上面條件且TIMEOVERDUE不爲空表明消息還在處理中;
若是數據符合上面條件且TIMEOVERDUE爲空表明消息已處理完成,單未正確到達監控節點。
BAM實體清單
名稱 |
代碼 |
父類 |
產生 |
數字 |
監控點 |
ActivityDefinition |
EntitySupport |
Auto |
|
消息監控記錄 |
ActivityState |
TemporalEntity |
Auto |
|
消息 |
ProcessInstance |
Auto |
||
消息處理器 |
ProcessDefinition |
EntitySupport |
Auto |