Camel消息过滤 - 正文内容过滤

时间:2013-09-11 20:15:31

标签: filter activemq apache-camel jms-topic

我是Camel的新手,希望根据正文内容找到过滤JMS主题消息的选项。我查看了不同的语言进行过滤,如简单,OGNL,groovy等,但无法弄清楚它如何应用于基于内容的过滤 这是我需要过滤的JMS消息/内容的一个例子 -

"created_at":"Wed Sep 11 14:48:38 EDT 2013","text":"habra que ir pensando en cambiar el iphone...","id":"377866287525138432"

过滤条件应为“text”或body()包含“iphone”(ignorecase) 像 -

这样的东西
from("activemq:topic:MyTopic")
.filter().ognl(getRequest().getBody().???)
 .to("file:/abc/?fileName=abcFile.txt&autoCreate=true&fileExist=Append")

任何想法/建议将不胜感激。

感谢!!!

2 个答案:

答案 0 :(得分:2)

我建议花一点时间阅读Camel文档,例如

由于您使用OGNL然后阅读http://camel.apache.org/ognl.html - 有一些例子。例如,请注意OGNL脚本必须作为String参数提供,因此您的示例应该是相似的:

.filter().ognl("getRequest().getBody().contains('iphone')")

虽然可能更短

.filter().ognl("request.body.contains('iphone')")

答案 1 :(得分:1)

您也可以试用http://camel.apache.org/content-based-router.html进行基于内容的路由。如果您可以根据内容选择多个目的地来路由邮件,这将有所帮助。

from("jms:topic:MyTopic") .choice() .when(body().contains('iphone')) .to("direct:b") .otherwise() .to("direct:d");