【问题标题】:JMS Message Selector implementationJMS 消息选择器实现
【发布时间】:2013-07-23 00:38:20
【问题描述】:

我需要验证 javax.jms.Message 是否匹配提供的选择器,即:

Message msg = ...;
SomeSelectorMatcher matcher = new SomeSelectorMatcher(" someProp='someVal' and someProp2 >3 ... ");

if(matcher.matches(msg){
     //do sth
}else{
     //do sth else
}

是否有任何开箱即用的库可以做到这一点?

【问题讨论】:

  • 所有开箱即用的 JMS 库都可以做到这一点。如果应用程序看到该消息,则选择器匹配。如果没有,那么它没有。但我觉得您真正想要回答的问题是“我如何弄清楚为什么我的选择器与特定消息不匹配?”这是正确的还是错误的,你能澄清这个问题吗?
  • @marcin-michalski 您是否偶然想到了一种方法?

标签: java jakarta-ee jms


【解决方案1】:

我需要实现一个简单的测试框架,它可以模拟 JMS 行为但使用同步方法。无论如何,我能够找到实现了消息选择器解析器的库 - http://openjms.sourceforge.net/

【讨论】:

    【解决方案2】:

    消息选择器并不意味着允许这样做。为什么你需要这个?

    我建议为它创建多个消费者。例如。从上面的示例中,我将创建两个消费者。使用此代码的人:

    //do sth
    

    第二个是

    //do sth else
    

    第一个有选择器,第二个选择器逻辑相反。

    如果您在收到消息后确实需要进行过滤,您可以直接比较传入消息中的标题和属性。你甚至可以处理正文,而选择器不能这样做。

    http://download.oracle.com/javaee/5/tutorial/doc/bnceh.html

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 2015-11-05
      • 2015-06-16
      • 2011-05-29
      • 2012-02-03
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多