キューがバックアップされていないという問題が発生していますが、コンシューマが実際に JMS メッセージを実行するまでの時間は、作成から 100 ~ 200 秒です (JMSTimestamp-CurrentTime で測定)。
キューへのフローはかなり低く、1 分間に 30 件未満のメッセージでした。ActiveMQ を再起動することで問題を解決できました。その後、メッセージは作成されてから 1 ミリ秒未満で開始されました。
ActiveMQ 5.4.1 を使用していますが、MDB で行われている作業の通常の合計実行時間は 2 ミリ秒未満です。遅延の時点で、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);
}