JMS 消息接收器按消息文本过滤
JMS message receiver filtering by message text
我正在处理迁移项目。我想在 jms 消息文本上设置过滤器。这里 JMS 消息文本内容有 xml 条消息。 jms 中是否有任何方法可以在 xpath 或某些文本内容上添加过滤器,或提供此类功能的任何工具?
如果您可以在发送消息 header 之前将 属性 包含在消息中,那么消费者可以根据它过滤消息。
可以用注解指定。如果过滤条件固定则更合适。
@ActivationConfigProperty(propertyName = "messageSelector",
propertyValue = "xkey = 'xValue'")
否则,也可以在创建消费者时指定&可以在运行时provide/build过滤条件。
String messageSelector = "xkey = 'xValue'";
session.createConsumer(destination, messageSelector);
除此之外,我不知道其他方法。但是很难根据 XML 消息中特定属性的某些值来过滤消息,解析每个 object,检查所有属性等
可能的解决方案是使用集成框架,即 Apache Camel which provide some filter components. Concretely, Apache Camel provides following message filters。我不知道你的项目有多大,也许是一个开销...但它是一个解决方案。
我正在处理迁移项目。我想在 jms 消息文本上设置过滤器。这里 JMS 消息文本内容有 xml 条消息。 jms 中是否有任何方法可以在 xpath 或某些文本内容上添加过滤器,或提供此类功能的任何工具?
如果您可以在发送消息 header 之前将 属性 包含在消息中,那么消费者可以根据它过滤消息。
可以用注解指定。如果过滤条件固定则更合适。
@ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "xkey = 'xValue'")
否则,也可以在创建消费者时指定&可以在运行时provide/build过滤条件。
String messageSelector = "xkey = 'xValue'"; session.createConsumer(destination, messageSelector);
除此之外,我不知道其他方法。但是很难根据 XML 消息中特定属性的某些值来过滤消息,解析每个 object,检查所有属性等
可能的解决方案是使用集成框架,即 Apache Camel which provide some filter components. Concretely, Apache Camel provides following message filters。我不知道你的项目有多大,也许是一个开销...但它是一个解决方案。