2011-03-09 90 views
1

我需要验证javax.jms.Message是否匹配提供的选择即:JMS消息选择执行

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

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

是否有任何开箱库,这是否吗?

+0

所有开箱即用的JMS库都可以执行此操作。如果应用程序看到消息,则匹配选择器。如果不是,那么它没有。但是我觉得你真正想要回答的问题是“我怎么知道为什么我的选择器不匹配特定的消息?”这是正确的还是不正确的,你能澄清这个问题吗? – 2011-03-09 20:38:14

+0

@ marcin-michalski你有没有想过一个办法来做到这一点偶然? – 2016-10-07 11:17:52

回答

1

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

0

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

我建议为它创建多个消费者。例如。从你上面的例子中我会创建两个消费者。一个与此代码:

//do sth 

,第二个用于

//do sth else 

第一将具有选择器和第二选择器逻辑相反。

如果您确实需要在收到邮件后进行筛选,则可以直接比较传入邮件中的邮件头和属性。你甚至可以在选择器无法做到的情况下处理身体。

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