.NETクライアントを備えたTIBCOJMS-キューに詰まったメッセージの問題
質問
.NET 2.0の.NET TIBCO.EMS.DLLの同じバージョンでTIBCO JMS 4.3.3を使用しています。トピックからブリッジされた1つのキューからメッセージを消費しています。当社のアプリケーションは、長年のセッションを持つ複数の消費者を作成します - 長年の各セッションには1人の消費者がいます。セッションと消費者はメインスレッドで作成されますが、消費者自体は、個別のスレッドでタイムアウトを使用してreceed()メソッドを使用してメッセージを消費しています。各消費者には、それが機能している独自のスレッドがあります。成功するたびに、メッセージを受け取った消費者を作成したセッションでコミットを呼び出しています(醜い言葉遣いは申し訳ありません)。
問題は、このキューが(トピックからのブリッジによって)強く満たされている場合、多くのメッセージが行き詰まっていることです。スレッドはそれらを受け取ることができず、キューを閲覧しているのをはっきりと見ることができ、アプリケーションを再起動すると再処理されます。また、TIBCOコンソールで「消費者を表示する」を実行している場合、メッセージの数が詰まっていると、送信されたメッセージの数が表示されている場合、確認されたメッセージの数と等しくなります。
私たちは絶対に失われています - このキューのプリフェッチを有効にし、無効にしようとしました。どちらのソリューションも機能しませんでした。受信タイムアウトを1秒から1分に増やしましたが、保留中のメッセージが何らかの境界を越えている場合、メッセージは詰まっています。
支援、チップ、または提案は非常に高く評価されます。
解決
最終的に、4.4.3バージョンのTIBCOEMSにバグがあり、一部のクライアント接続がフリーズすることがわかりました。 5.xで修正されました
他のヒント
キューレシーバーとして機能するスレッドコードのどこかで、確認コミットが欠落しているようです。消費者コードを確認することをお勧めします。すべてのスレッドがユニークなキューを聞いていると思います。
-HB