Filter 驼峰消息筛选-正文内容筛选

Filter 驼峰消息筛选-正文内容筛选,filter,activemq,apache-camel,jms-topic,Filter,Activemq,Apache Camel,Jms Topic,我不熟悉Camel,希望找到一个基于正文内容过滤JMS主题msg的选项。我研究了不同的过滤语言,如simple、OGNL、groovy等,但无法弄清楚如何将其应用于基于内容的过滤 下面是我需要从中筛选的JMS消息/内容的示例- "created_at":"Wed Sep 11 14:48:38 EDT 2013","text":"habra que ir pensando en cambiar el iphone...","id":"377866287525138432" 筛选条件应为“tex

我不熟悉Camel,希望找到一个基于正文内容过滤JMS主题msg的选项。我研究了不同的过滤语言,如simple、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")
如有任何想法/建议,将不胜感激


谢谢

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

既然您使用OGNL,那么请阅读-这里有一些示例。例如,请注意,OGNL脚本必须作为字符串参数提供,因此您的示例应该类似:

.filter().ognl("getRequest().getBody().contains('iphone')")
虽然可能会短一些

.filter().ognl("request.body.contains('iphone')")
您也可以尝试使用基于内容的路由。如果您可以根据内容选择多个目的地来路由消息,这将很有帮助

from(“jms:topic:MyTopic”)
.choice()
.when(body().contains('iphone'))
。致(“直接:b”)
.否则()

。致(“直接:d”)

在类似的情况下,它对我有帮助。如果您使用maven,不要忘记添加依赖项camel ognl。谢谢你,克劳斯。