2012-06-18 48 views
7

在類似Apache Camel的ESB上,實際上沿着從端點到端點的路由「推進」(拉/推)消息的機制是什麼?阿帕奇駱駝:什麼遊行一起?

是否駱駝RouteBuilder剛剛撰寫的EndpointsRoutes一個圖,知道哪些目的地/下一Endpoint傳遞一個消息給它訪問一定Endpoint後還是做Endpoints自己知道這是它有消息的下一個目的地處理。

無論哪種方式,我很困惑:

  • 如果是RouteBuilder雖然知道通過系統消息的「流」,那麼這個RouteBuilder需要知道什麼時候Endpoint A的業務邏輯應該傳遞Endpoint BEndpoint C之間的消息,但在所有駱駝示例中,我看到此業務邏輯不存在;和
  • 這似乎是把那種「流」業務邏輯在Endpoints自己夫妻在一起並且擊敗了一些SOA/ESB/EIP的基本原則等

回答

8

引擎蓋下我相信camel正在構造一個純圖,其中每個節點是一個Camel端點/處理器,並且每條邊都是兩個端點(源和目標)之間的路徑。這個圖形正是RouteBuilder在您調用其API時構建的。當您前往start()駱駝路線時,該圖很可能會被驗證並轉換爲需要執行的一系列Runnable,並且可能使用某種自定義Executor或線程管理來處理這些Runnable

因此,執行Runnable(處理器到達時處理消息)由此自定義Executor處理。這是「沿着消息傳遞」的機制,儘管任務排隊的順序是由由RouteBuilder組成的圖的總體結構驅動的。

7

我建議首先閱讀此QA What exactly is Apache Camel? ...及其涉及的鏈接,關於Apache Camel的更多背景。

業務邏輯可以是任何種類的邏輯,例如Java bean(POJO)。駱駝允許你以一種不可思議的方式訪問你的業務邏輯。例如,見這些鏈接