Я вижу проблему, когда очередь не копируется, однако время для фактического выполнения пользователем сообщения JMS составляет от 100 до 200 секунд с момента создания (согласно измерениям с помощью JMSTimestamp-CurrentTime).
Поток в очереди был довольно низким, менее 30 сообщений в минуту. Мне удалось решить проблему, перезапустив ActiveMQ, после чего сообщения запускались менее чем через 1 мс с момента их создания.
Я использую ActiveMQ 5.4.1, и нормальное общее время выполнения работы, выполняемой в MDB, составляет менее 2 мс. Во время задержки сообщений об ошибках в журнале ActiveMQ не было, ЦП был низким и имел много памяти.
Похоже, что потребитель вытаскивает сообщение из очереди, но почему-то сидит на нем.
Есть ли какие-то проблемы с конфигурацией, которые могут вызывать эту проблему?
Редактировать:
Первая строка моего 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);
}