【问题标题】:JMS message receiver filtering by message textJMS 消息接收者按消息文本过滤
【发布时间】:2015-04-03 14:37:06
【问题描述】:

我正在从事迁移项目。我想在 jms 消息文本上设置过滤器。这里 JMS 消息文本内容有 xml 消息。 jms 中是否有任何方法可以在 xpath 或某些文本内容上添加过滤器,或者任何提供此类功能的工具?

【问题讨论】:

    标签: java jakarta-ee jms


    【解决方案1】:

    如果您可以在发送前在消息头中包含属性,那么消费者可以根据它过滤消息。

    • 您可以使用注释来指定它。如果过滤条件固定,则更合适。

      @ActivationConfigProperty(propertyName = "messageSelector",
                  propertyValue = "xkey = 'xValue'")
      
    • 另外,也可以在创建消费者时指定,并且可以在运行时提供/构建过滤条件。

      String messageSelector = "xkey = 'xValue'";
      session.createConsumer(destination, messageSelector);
      

    否则,我不知道其他方式。但是根据特定属性的 XML 消息中的某些值过滤消息、解析每个对象、检查所有属性等是非常困难的。

    【讨论】:

    • 谢谢纳扬。我知道这个解决方案,但我们无法实现,因为 JMS 消息是由外部组件发送的,我们无法更改该组件。
    【解决方案2】:

    可能的解决方案可能是使用集成框架,即Apache Camel,它提供了一些过滤器组件。具体来说,Apache Camel 提供以下message filters。我不知道你的项目有多大,也许是开销……但这是一个解决方案。

    【讨论】:

    • 谢谢米哈尔。还有一个问题,我们能否将 Apache Camel 与 weblogic 服务器一起使用,因为据我所知,它与 Apache active MQ 配合得很好。
    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2014-12-30
    • 2011-10-09
    • 2011-12-12
    • 2023-03-19
    相关资源
    最近更新 更多