Я вижу проблему, когда очередь не резервируется, однако время для фактического выполнения потребителем сообщения JMS составляет от 100 до 200 секунд с момента создания (как измерено с помощью JMSTimestamp-CurrentTime).
Поток в очередь был довольно низким, менее 30 сообщений в минуту. Мне удалось решить проблему, перезапустив ActiveMQ, после чего сообщения запускались менее чем через 1 мс с момента их создания.
Я использую ActiveMQ 5.4.1, и обычное общее время выполнения для работы, выполняемой в MDB, составляет менее 2 мс. На момент задержки в журнале ActiveMQ не было сообщений об ошибках, ЦП был низким и имел много памяти.
Кажется, что потребитель вытаскивает сообщение из очереди, но почему-то сидит на них.
Есть ли какие-либо проблемы с конфигурацией, которые могут быть причиной этой проблемы?
Edit:
Первая строка моего MDB выглядит следующим образом:
/* Check the time since this message was created versus processed */
try {
long secondsToProcess = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - aMessage.getJMSTimestamp());
if (secondsToProcess > 5) {
log.error("JMS Consumer Start Delay: " + secondsToProcess + " s" + " JMS Message took more then 5 seconds to be processed");
} else {
log.debug("JMS Consumer Start Delay: " + secondsToProcess + " s");
}
} catch (Exception e) {
log.error(e);
}