【发布时间】:2015-04-03 14:37:06
【问题描述】:
我正在从事迁移项目。我想在 jms 消息文本上设置过滤器。这里 JMS 消息文本内容有 xml 消息。 jms 中是否有任何方法可以在 xpath 或某些文本内容上添加过滤器,或者任何提供此类功能的工具?
【问题讨论】:
标签: java jakarta-ee jms
我正在从事迁移项目。我想在 jms 消息文本上设置过滤器。这里 JMS 消息文本内容有 xml 消息。 jms 中是否有任何方法可以在 xpath 或某些文本内容上添加过滤器,或者任何提供此类功能的工具?
【问题讨论】:
标签: java jakarta-ee jms
如果您可以在发送前在消息头中包含属性,那么消费者可以根据它过滤消息。
您可以使用注释来指定它。如果过滤条件固定,则更合适。
@ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "xkey = 'xValue'")
另外,也可以在创建消费者时指定,并且可以在运行时提供/构建过滤条件。
String messageSelector = "xkey = 'xValue'"; session.createConsumer(destination, messageSelector);
否则,我不知道其他方式。但是根据特定属性的 XML 消息中的某些值过滤消息、解析每个对象、检查所有属性等是非常困难的。
【讨论】:
可能的解决方案可能是使用集成框架,即Apache Camel,它提供了一些过滤器组件。具体来说,Apache Camel 提供以下message filters。我不知道你的项目有多大,也许是开销……但这是一个解决方案。
【讨论】: