Apache camel-如何通过消息正文使用activemq选择性使用者

时间:2019-06-06 18:21:13

标签: apache-camel activemq

我想要两个使用单个activemq队列的使用者,并且想要在使用时进行过滤。选择性是我的最佳选择(请提出建议)。但是发件人不会向我发送任何标头参数或任何属性,选择性发送仅适用于标头或属性,现在我想在消息正文上过滤消息。有什么方法可以对邮件正文使用选择性

我的两个消息正文在test和test2上有所不同

{
   "test":{
      "abc":"123",
      "cde":"123"     
   }
}





{
   "test2":{
     "abc":"321",
     "cde":"321"
   }
}

我希望消息正文具有选择性

from("jms:selective?selector=" + java.net.URLEncoder.encode(${body.test})).
    to("cxf:bean:replica01");

from("jms:selective?selector=" + java.net.URLEncoder.encode(${body.test2})).
    to("cxf:bean:replica02");

请建议是否有任何方法。

1 个答案:

答案 0 :(得分:1)

正如selector documentation for ActiveMQ 5.x所指出的,您可以对具有XML主体的消息使用基于XPath的选择器。但是,您的消息主体不是XML,因此似乎无法获得所需的功能。

请记住,就代理而言,消息的主体只是一个字节数组,而键入的消息头/属性则允许进行使选择器可行的各种比较操作。