コンシューマーが実際にJMSメッセージを実行する時間は、(JMSTimestamp-CurrentTimeで測定した場合)100秒から200秒の間ですが、キューはバックアップされません。ActiveMQコンシューマー実行遅延
フローはキューに対してかなり低く、1分あたり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
はい、私は更新された質問を参照してください – Jeremy