我想在兩個servlet之間建立簡單的VM隊列測試,但沒有成功。問題在於請求總是超時,因爲在預期的時間範圍內沒有響應,OUT消息。Servlet之間的Apache駱駝VM隊列
「org.apache.camel.ExchangeTimedOutException:在30000毫秒內未收到OUT消息。」
servlet在Tomcat中運行並且都部署Apache Camel。這兩款應用都定義了駱駝上下文和簡單路由。基本設置應罰款像下面這個簡單的路由工作:
<route>
<from uri="servlet:///hello?servletName=app1" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
<route>
<from uri="servlet:///hello?servletName=app2" />
<transform>
<simple>Hello world</simple>
</transform>
</route>
首先我不知道如果消息沒有到達APP2一樣timout是即使請求的路徑不會甚至定義(app2將缺少虛擬機路由)。所以問題可能在於如何使用VM隊列定義兩個servlet之間的路由。
如果servlet之間的路由沒問題,那麼問題應該在丟失/不正確的答覆中。我明白,接收端應該返回的答覆,因爲從Web服務器的傳入請求是inOut類型,但我不知道如何實現這一點。
接收網絡請求APP1路線:
<route>
<from uri="servlet:///test?servletName=app1" />
<to uri="vm:test">
</route>
和servlet的APP 2的另一端:
<route>
<from uri="vm:test" />
// Tested here: output with <simple>, 'To', 'inOut'... the result is always timeout
</route>
由於我是新與Apache駱駝的根本原因很可能是非常簡單。任何幫助將不勝感激。
問題很簡單,如何在兩個servlet應用程序之間設置VM隊列?
我完全錯過了駱駝核心JAR需要共享的部分。現在我需要弄清楚如何在沒有嵌入駱駝內核的情況下打包.war,而是使用共享的。完成所有工作後,我會在此更新結果。謝謝克勞斯。 – Laowai 2013-05-01 04:20:33
現在的問題是,如果我只將camel-core移動到Tomcat共享庫文件夾中,servlet將停止工作,因爲顯然有一些與日誌依賴關係有關的類加載器衝突。如果我還在共享庫下移動日誌依賴項(來自Maven Apache camel模板的標準依賴項),則會出現另一個類加載器相關的鏈接錯誤。我真的需要弄清楚哪些JAR要移動到共享文件夾,還是有一些已知的軟件包必須與駱駝內核或其他方式相匹配?將駱駝內核設置爲共享JAR的最佳實踐是什麼? – Laowai 2013-05-01 12:01:51
通過正確配置日誌記錄並重新啓動Tomcat解決了依賴關係的問題。 – Laowai 2013-05-03 06:11:07