2016-11-04 145 views
0

我得到一個JMS隊列(的javax.jms)我stablish通過連接:錯誤從JMS消息獲取隊列

jmsConnect = queueConnectionFactory.createQueueConnection(); 
jmsSession = jmsConnect.createQueueSession(true,  jmsSession.AUTO_ACKNOWLEDGE); 
jmsConnect.start(); 
connection = queueConnectionFactory.createConnection(); 
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); 
connection.start(); 

我試圖讓排隊這一功能消息:

QueueBrowser browser = session.createBrowser(Queue); 
Enumeration e = browser.getEnumeration(); 
while (e.hasMoreElements()) { 
e.nextElement(); 
cont++; 
} 
browser.close(); 
browser = null; 

有至少有1個排隊的消息,但是當函數試圖獲得排隊消息的總數時,總是返回0,對於可能發生什麼的一些想法?

+0

您如何知道隊列中有消息?你有任何控制檯到MQ來查看​​它們嗎? – developer

+0

因爲我在JBoss管理控制檯中看到它,所以我的Queue有1個消息排隊,隊列設置爲持久化,但是當我嘗試使用代碼監視該隊列時,答案始終爲0,hasMoreElements方法始終返回false。 – mareyes

回答

0

您有可能在隊列中有過期的消息。您仍然會發現郵件處於排隊計數狀態,但是當您嘗試閱讀郵件或在您的情況下瀏覽時,它可能無法提供給您的應用程序。 AMQ中的一個例子是this up

+0

嗨!隊列設置爲持久的消息永遠不會丟失,我有一個監聽器來重新建立通信,當我打開它時收到排隊消息 – mareyes