2016-11-04 2 views
0

я получаю JMS Queue (JAVAX.JMS) Я укрепите соединение через:Ошибка при получении сообщений из очереди 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, моя очередь имеет 1 сообщение в очереди, очередь задается как долговечная, но когда я пытаюсь контролировать эту очередь с кодом, ответ всегда равен 0, метод hasMoreElements всегда возвращает false. – mareyes

ответ

0

Скорее всего, у вас есть истекшее сообщение в очереди. Вы все равно обнаружите, что сообщения находятся в очереди, но при попытке прочитать сообщение или в вашем случае просмотреть его не может быть доступно для вашего приложения. Пример в AMQ: this up

+0

HI! Очередь устанавливается как долговечная, сообщение никогда не теряется, у меня есть слушатель, чтобы восстановить связь, и когда я включаю его в очередь, полученную сообщение – mareyes