ActiveMQの消費者の実行遅延
-
26-09-2019 - |
質問
(JMSTimestamp-CurrentTimeを介して測定される)作成から200秒 -
私はキューがバックアップされていない問題を見ているがしかし、実際にJMSメッセージを実行するために、消費者のための時間は、100との間にあります。
フローは、30件のメッセージ分未満、キューにかなり低かったです。私は、彼らが作成されたときから、1ミリ秒未満のメッセージが上で開始された後、ActiveMQのを再起動することで問題を解決することができました。
私は、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);
}
解決 2
結局のところ、ActiveMQのはちょうど罰金を動作した、私の労働者は、したがって時間がかかりすぎてキューをバックアップしました。私の質問のコードは、私はそれを見ることができます。
他のヒント
あなたは、消費者がすぐにキューからメッセージを引っ張っていることをどのように確信していますか? ActiveMQのは、 ActiveMQのメッセージプロパティを参照してください(あなたがこれを確認するために使用することができますJMSActiveMQBrokerInTime
とJMSActiveMQBrokerOutTime
プロパティを提供します>)。
所属していません StackOverflow