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。我不知道你的项目有多大,也许是一个开销...但它是一个解决方案。