2013-04-25 119 views
1

任何人都可以幫助我。我試圖用駱駝發送消息。也許我有錯誤的概念.w 我想發送一個簡單的消息給activemq。我有一個messageService是sendmethode。問題是我發送pojo作爲消息,我希望它自動轉換爲json字符串。這就是爲什麼我嘗試使用駱駝。發送轉換後的jms與駱駝

我已經定義了一個指向我的發送方法的路由,並在路由中添加了一個編組。

問題是,駱駝似乎每隔一秒鐘不斷髮送jms消息。 我想要的是,當我調用sendMethode時,駱駝將我的消息輸出轉換爲json。

這裏是我的潰敗:

<from uri="bean:messageService?method=sendMessage" /> 
    <marshal> 
    <json library="Gson"/> 
    </marshal> 
<inOnly uri="activemq:com.pack.checkSynchronicityUrl" /> 

因此,當我撥打服務messageService我想駱駝的輸出轉換成JSON並把它放在隊列中。

非常感謝您的幫助。

回答

0

當你有一個路線使用Bean的組件豆

<from uri="bean:xxx"/> 

的開始,那麼駱駝會不斷調用bean方法,在一個無限循環。

所以你需要做一些其他的事情,例如從你的bean中的java代碼中,你可以使用生產者模板api,pojo生成或者使用代理等等向Camel路由發送消息。

0

@克勞斯已經解釋了你的路線問題。

您可以通過不同的方式實現您需要的行爲,您可以在這些鏈接中看到。這裏有一個適合你的目的的樣本。

定義路線爲:

from("direct:start"). 
    marshal(...). 
     to("activemq:com.mele...); 

或在彈簧DSL類似。以下代碼可以是messageService.sendMessage()方法的一部分:

ProducerTemplate template = camelcontext.createProducerTemplate(); 
template.sendBody("direct:start", myPojo);