apache-camel - 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");
请建议是否有任何方法可以这样做。
解决方案
正如ActiveMQ 5.x 的选择器文档所指出的,您可以将基于 XPath 的选择器用于具有 XML 主体的消息。但是,您的消息正文不是 XML,因此似乎无论如何都无法获得您正在寻找的功能。
请记住,就代理而言,消息的主体只是一个字节数组,而消息头/属性是类型化的,它允许进行使选择器可行的比较操作。
推荐阅读
- android - 将 Firebase 集成到功能时遇到麻烦
- java - 如何从 testNG 测试计划中传递 invocationCount 的值
- ruby-on-rails - 如何在 ruby 中将新属性包含到我的 json 数组中?
- python - Python/Pandas:选择特定值并返回系列
- r - R:绘制值网格
- css - 我的图像在悬停时闪烁
- python - list() 函数混淆
- c - C语言中的Websocket实现
- c++ - 在 C++ 中,为什么只包含联合及其基类实例的派生类占用的内存比联合的大小还要多?
- java - 无法为 Spring KafkaTemplate 指定 valueSerializer 实例