WebLogic 8.1で、問題が発生しましたが、修正できませんでした。多くの場合、100以上のJMSメッセージをキューに入れます。各メッセージは、作業単位を表します。各メッセージは同じサイズで同じように見えますが、完了するのに数秒しかかからない場合がありますが、次のメッセージは20分間の確実なクランチを表します。
私たちの問題は、これらのメッセージの処理を行っている各メッセージ駆動型Beanが、一度に10個のメッセージを取得しているように見えるスレッドになってしまうことです(WebLogicの最適化として行われているため、小さなメッセージを何度もキューに入れます)。次に、次々とスレッドがすべての小さなジョブを終了し、新しいジョブが入らないため、最大9つの他のアイテムが終了するのを待っているにもかかわらず、1つのスレッドログが長時間実行されている作業に詰まってしまいます。他のスレッドは無料であり、それらの作業単位で開始できるという事実。
これで、WebLogic 10に変換しているところなので、この問題に戻って、次のいずれかを実装できる解決策があるかどうかを確認するのが自然なポイントです。a)各スレッドがで1つのJMSメッセージのみを取得する処理して他のすべてのメッセージを着信キューで待機させたままにする時間、またはb)待機中のメッセージ(特定のスレッドにすでに割り当てられているメッセージも含む)を空きスレッドに自動的に再配布します。何か案は?