我看到一個問題,其中隊列沒有備份,但是消費者實際執行JMS消息的時間在創建後100到200秒之間(通過JMSTimestamp-CurrentTime測量)。ActiveMQ消費者執行延遲
流量相對較低,每分鐘少於30封郵件。我能夠通過重新啓動ActiveMQ來解決問題,之後消息從創建時開始少於1ms。
我正在使用ActiveMQ 5.4.1,正在MDB中完成的工作的正常執行時間少於2ms。在延遲的時候,ActiveMQ日誌中沒有錯誤消息,CPU很低並且內存充足。
看起來消費者似乎將消息從隊列中拉出,但由於某種原因而坐在他們身上。
是否有一些配置問題可能導致此問題?
編輯:
我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);
}
您是否嘗試在MDB的頂部放置一條日誌語句以查看它實際上是否正在獲取它?這似乎是一些奇怪的交易錯誤。 – javamonkey79 2010-11-19 17:13:08
是的,我是,看到更新的問題 – Jeremy 2010-11-19 19:08:25