2010-10-04 63 views
2

首先感謝鄉親誰是目前參與駱駝開發的路由信息​​,我爲人人,他們已經投入的辛勤工作表示感謝Apache的駱駝:保持完全獨立的Java代碼

我。尋找一些設計建議。

這個架構是這樣的: 我有一堆Java類,它們在實例化時需要相互連接並使用Apache Camel發送消息。設計約束要求我創建一個框架,以便所有路由信息,生產者,消費者,端點等應該是camel-context.xml的一部分。

的個人應該有修改這樣的文件,徹底改變現有的路線,而不必使用Java代碼對他的能力。(Java代碼將不被提供,僅編譯罐會)

例如在One setup中, Bean A - > Bean B-> Bean C-> file-> email。 在另一 豆B->豆A->豆C-> FTP->文件 - >電子郵件 我們嘗試了各種接洽,但如果原豆不作爲Java DSL落實,消息率非常高,因爲駱駝不斷地在第一個例子中調用Bean A,在第二個(它們是源)中調用Bean B。

Bean A和Bean B發起消息並且是事件驅動的。在發生所需事件的情況下,bean會發出通知消息。

我的轉換非常簡單,我根本不需要Java DSL的強大功能。總之,我有以下問題:

1)考慮到上述約束,我確保所有的路由信息​​,包括目的地址,一切都是駱駝上下文文件的一部分嗎?

2)有沒有例子可以看到保持路由信息完全獨立於java代碼?

3)如何確保Camel不會始終調用原始bean?

4)Camel是否不斷地調用原始bean或任何bean,它會發送&消息,而不考慮bean在整個消息隊列中的位置?

我用盡了各種方法來設置它的選項。任何幫助,將不勝感激。

回答

3

閱讀關於隱藏駱駝維基頁面上的中間件。這允許您讓客戶端使用接口發送/接收消息,但完全不瞭解Camel(根本不使用Camel API)。

更好考慮購買駱駝行動書,並閱讀第14章談論這一點。 http://www.manning.com/ibsen/

在Manning書籍中保存41%:Camel in Action或ActiveMQ in Action。使用代碼s2941。 10月6日到期。 http://www.manning.com/ibsen/

+0

謝謝,拿到書的保持。第14章看起來很有趣。如果我還有其他問題,會再次發生。 – smschauhan 2010-10-04 16:40:34

+0

我想我應該放棄在Fuse Servicemix中執行這個想法。第14章中的配置僅適用於駱駝:運行。部署到servicemix時無法執行它。 – smschauhan 2010-11-03 07:51:33

+0

您仍然可以使用ServiceMix,方法是將所有Java代碼放在一個包中並進行部署,同時將Spring/Blueprint文件中的路由邏輯外部化並將該文件自行放入{smx_home}/etc目錄。該文件將作爲一個包啓動。 – 2012-02-21 10:50:08

0

如果您考慮使用FuseESB的ServiceMix,您可能需要將路線分爲兩部分。

第一部分是觸發路由的事件驅動程序bean。它可能會將消息推送到ServiceNMR(請參見http://camel.apache.org/nmr.html)。

另一部分將留給使用Spring DSL的框架用戶。它只會聽取核磁共振信息(通過其他路線推送),並隨意做任何他們想做的事情。

當然端點的定義可以使用ServiceMix的配置服務來propertized(見http://camel.apache.org/properties.html#Properties-UsingBlueprintpropertyplaceholderwithCamelroutes