【问题标题】:Apache camel - How to use activemq Selective consumer using message bodyApache camel - 如何使用消息体使用 activemq 选择性消费者
【发布时间】:2019-06-07 03:02:33
【问题描述】:

我想要两个具有单个 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");

如果有什么办法,请提出建议。

【问题讨论】:

  • 我的回答是否解决了您的问题?如果是这样,请将其标记为正确,以帮助将来有相同问题的其他用户。如果不是,请详细说明原因。谢谢!

标签: apache-camel activemq


【解决方案1】:

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

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

【讨论】:

  • 感谢贾斯汀的帮助,我知道我的身体类型是 json,所以 xpath 将无法工作,所以我正在考虑通过过滤器并将其放入单独的队列中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2016-10-24
  • 1970-01-01
  • 2014-10-09
相关资源
最近更新 更多