我需要验证javax.jms.Message是否匹配提供的选择器,即:。
Message msg = ...;
SomeSelectorMatcher matcher = new SomeSelectorMatcher(" someProp='someVal' and someProp2 >3 ... ");
if(matcher.matches(msg){
//do sth
}else{
//do sth else
}
是否有开箱即用的库?
答案 0 :(得分:1)
我需要实现简单的测试框架,它可以模拟JMS行为,但使用同步方法。无论如何,我能够找到实现了消息选择器解析器的库 - http://openjms.sourceforge.net/
答案 1 :(得分:0)
消息选择器并不意味着允许这样做。为什么你需要这个?
我建议为它创建多个消费者。例如。从上面的例子我将创建两个消费者。一个有这个代码:
//do sth
和
的第二个//do sth else
第一个有选择器,第二个选择器在逻辑上相反。
如果您确实需要在收到消息后进行过滤,则可以直接比较传入消息中的标题和属性。你甚至可以处理身体,而选择者则不能这样做。