1

我是 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"

过滤条件应该是“文本”或 body() 包含“iphone”(忽略大小写)类似于 -

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

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

谢谢!!!

4

2 回答 2

2

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

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

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

虽然它可能会更短

.filter().ognl("request.body.contains('iphone')")
于 2013-09-13T12:36:48.343 回答
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");

于 2014-05-05T14:30:49.820 回答