2015-03-02 65 views
0

在我的消息隊列中包含幾條消息。這我想按特定屬性進行分組。這些都有一個自定義屬性「項-ID」ActiveMQ消息選擇器

這個我現在一定值:體育,電影......

我做到這一點,如:

new MessageCreator() { 
ObjectMessage message = session.createObjectMessage(); 
message.setObject(data); 
message.setStringProperty("item-id", "sports"); 
} 

也顯示該值在屬性的隊列中。

當我嘗試檢索包含此屬性的消息時,我得不到任何結果。

一審判決:

Connection con = pc.createConnection(); 
Session sess =con.createSession(false,Session.AUTO_ACKNOWLEDGE);  
AmqMessagesQueryFilter queryFilter = new AmqMessagesQueryFilter(pc, queue); 
con.start(); 
String selector = "item-id = 'sports'"; 
List messages = queryFilter.query(selector); 

但列表爲空

二審:

Connection con = pc.createConnection(); 
Session sess = con.createSession(false, Session.AUTO_ACKNOWLEDGE); 

AmqMessagesQueryFilter queryFilter = new AmqMessagesQueryFilter(pc, queue); 

QueueBrowser queueBrowser = sess.createBrowser(queue,"item-id = 'sports'"); 
con.start(); 
List messages=Collections.list(queueBrowser.getEnumeration()); 

而且列表爲空。

我的錯誤是什麼?

+0

您是否在運行查詢過濾器之前在隊列中放置了一些消息? – ramp 2015-03-04 10:24:04

+0

是和不是。我在開始之前嘗試了一些隊列中的消息,並在開始時使用了一個空隊列。 – fuerst 2015-03-12 08:02:39

+0

斷開所有聽衆的聯繫,將一些消息放入隊列中,其中包含標題'item-id'和值'sports',然後再次運行您的過濾器。 – ramp 2015-03-12 09:37:42

回答