2012-04-06 56 views
1

所以我讓我的ActiveMQ接收來自另一個位置的消息woo hoo - 今天早上在這裏開心的舞蹈!ActiveMQ/Camel發送文件作進一步處理

現在我需要在消息到達隊列後對消息採取後續步驟。

具體而言,取決於文件名,它將需要發送到另一個隊列或直接發送到另一個進程(如果可能發生的話)。

例如,發送一個包含有關法庭會話更改信息的文件。我需要讀取該XML並更新一些本地MySQL表。法庭會議程序是否可以成爲網絡服務?理想情況下,我只想將文件傳遞給該服務。

發送另一個文件,其中包含有關已取消許可證的信息,我需要將該文件的信息發送到外部Oracle數據庫上的存儲過程。 我可以從文件名中知道下一個過程是該文件應該發送到哪裏。

所以,我正在尋找建議,我最好的行動方式是爲正在發送到隊列的文件設置附加處理?

非常感謝! 順便說一句 - 我們已經訂購了'ActiveMQ in Action'和'Camel in Action',我將會閱讀那些,但現在,任何特定的新手指導將不勝感激。

張國榮

回答

2

駱駝content based router是你在找什麼。它允許您根據郵件正文/頭/屬性設置路由規則...

這是一個基本的例子,從入站隊列中讀取並簡單地委託給基於首部的隊列......

from("activemq:queue:inboundQueue") 
     .choice() 
      .when(header("foo").isEqualTo("bar")) 
       .to("activemq:queue:barQueue") 
      .when(header("foo").isEqualTo("cheese")) 
       .to("activemq:queue:cheeseQueue") 
      .otherwise() 
       .to("activemq:queue:generalQueue"); 

除了檢查郵件頭,您還可以檢查身體和性能(使用simple表情,xpath等),以確定正確的路由,等等

+0

你是真棒!我現在就試試看! – Leslie 2012-04-06 15:29:11

+0

好吧我有春天的XML設置,但我想看看文件名是否包含TAHEARING〜SAVE-COURTSESSION表達式 - 你能幫我用我需要的xPath嗎?而當你說頭部富 - 這是在哪裏設置的?我在消息中看到有頭信息,我是否會將foo替換爲該列表中的某個值?謝謝! – Leslie 2012-04-06 15:46:48

+0

Leslie,您可以更改「foo」以引用任何標題屬性...發佈您的XML消息,我可以嘗試幫助xpath ... – 2012-04-06 18:44:38

相關問題