Apache camel ApacheCamel-如何使用消息体使用activemq选择性使用者

Apache camel ApacheCamel-如何使用消息体使用activemq选择性使用者,apache-camel,activemq,Apache Camel,Activemq,我想要两个具有单个activemq队列的消费者,并希望在消费时进行筛选。选择性是我的最佳选择(如果有其他选择,请建议)。但发送方并没有向我发送任何头参数或任何属性,选择性仅适用于头或属性,现在我想在消息体上过滤消息。有没有办法在消息体中使用选择性 from("jms:selective?selector=" + java.net.URLEncoder.encode(${body.test})). to("cxf:bean:replica01"); from("jms:selective

我想要两个具有单个activemq队列的消费者,并希望在消费时进行筛选。选择性是我的最佳选择(如果有其他选择,请建议)。但发送方并没有向我发送任何头参数或任何属性,选择性仅适用于头或属性,现在我想在消息体上过滤消息。有没有办法在消息体中使用选择性

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");
我的两条消息正文因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");
请建议是否有办法做到这一点。

正如前面所指出的,您可以对具有XML正文的消息使用基于XPath的选择器。但是,您的消息正文不是XML,因此似乎无论如何都不存在获取所需功能的方法


请记住,就代理而言,消息体只是一个字节数组,而消息头/属性是类型化的,这允许进行使选择器可行的比较操作。

谢谢Justin的帮助,我知道我的正文类型是json,因此xpath无法工作,所以我想通过过滤器,把它放在单独的队列中。我的回答回答了你的问题吗?如果是,请将其标记为正确,以帮助将来有相同问题的其他用户。如果没有,请详细说明原因。谢谢