2012-04-06 57 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

相关问题