2011-03-09 122 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