規則引擎(Apache camel) 學習五

2022-06-17 10:12:10 字數 1906 閱讀 5744

1.recipient list 接收者列表

介紹:怎麼使用條件判斷向若干可能的路由路徑中的某一條路徑傳送訊息。

那麼如何做到根據判斷條件,向若干可能的路徑中的其中多條路徑傳送同一條訊息呢?

又或者向若干條可能的路徑全部傳輸同一條訊息呢?

靜態接收者列表(static recipient list)、動態接收者列表(dynamic recipient list)和 迴圈動態路由(dynamic router)。

下面我們對這幾種接收者列表形式進行逐一講解。

2.使用multicast處理static recipient list

並且按順序逐一執行(可設定為並行處理)這些接收者。這些接收者可能是通過direct連線的另乙個路由,

也可能是processor或者某個單一的endpoint。需要注意的是,excahnge是在endpoint控制端點和processor處理器間

或者兩個processor處理器間唯一能夠有效攜帶message的元素,所以將一條訊息複製多份並且讓其執行不相互受到影響,

那麼必然就會對exchange物件進行複製(是複製,是複製,雖然主要屬性內容相同,但是這些exchange使用的記憶體區域

都是不一樣的,exchangeid也不一樣)

**:以下是multicast使用的簡單示例**

package com.yinwenjie.test.cameltest.helloworld;

/*** 測試組播路由

* @author yinwenjie

*/public class multicastcamel extends routebuilder

}@override

public void configure() throws exception

/*** 另乙個處理器

* @author yinwenjie

*/public class otherprocessor implements processor

}}}總結:

以上**片段中,我們使用multicast將原始的exchange複製了多份,分別傳送給multicast中的兩個接收者,

並且為了保證兩個接收者的處理過程是並行的,我們還專門為multicast設定了乙個執行緒池(不設定的話camel將自行設定)。

在以上的**片段中,在multicast路由定義之後我們還設定了乙個otherprocessor處理器,

它主要作用就是檢視otherprocessor中的exchange物件的狀態。下面的截圖展示了以上**片段的執行效果:

總結:通過執行結果可以看到,在multicast中的兩個接收者(兩個路由分支的設定)分別在我們設定的執行緒池中執行,

執行緒id分別是【pool-1-thread-7】和【pool-1-thread-8】。在multicast中的所有路由分支都執行完成後,

otherprocessor處理器的例項在【qtp1060925979-18】執行緒中繼續執行(jetty:http-endpint對於本次請求的處理原本就在這個執行緒上執行)。

請各位讀者特別注意以上三句日誌所輸出的exchangeid,它們是完全不同的三個exchange例項!

其中在multicast的兩個路由分支中承載message的excahnge物件,它們的exchange-id號分別為

【id-yinwenjie-240-54110-1466755310568-0-20】和【id-yinwenjie-240-54110-1466755310568-0-19】,

**則是multicast對原始exchange物件的複製,原始exchagne物件的exchange-id為【id-yinwenjie-240-54110-1466755310568-0-16】。

mysql 規則引擎 為什麼使用規則引擎?

一天,朱斯參加了一場code review研討會。會上的一群人正在討論著如何對祖傳 進行變更,大家你一言,我一語,場面十分熱鬧!突然,只見人群中的乙個人滿面愁容,說道 昨天在專案中看到下面這樣一段 分支太多了!維護起來很煩啊!if day 周一 else if day 周二 else if day ...

規則引擎pyke

1.官網 2.安裝第三方包 pyenv global anaconda3 4.2.0 pip install htmltemplate 3.原始碼安裝pyke pyenv global anaconda3 4.2.0 cd pyke3 1.1.1 python setup.py build pyth...

規則引擎 easy rules

直接看官方的例子。經典的例子 大致的步驟 建立各種規則,即rule.可以通過 pojo 或 rulebuilder api 兩種方式建立。建立規則容器rules rules new rules 註冊建立的規則rules.add rule 建立流,即facts.流控制規則的引數輸入.facts fac...