1

.net 2.0 用の同じバージョンの .Net TIBCO.EMS.dll で TIBCO JMS 4.3.3 を使用しています。キューにメッセージがスタックするという大きな問題があります。トピックからブリッジされた 1 つのキューからメッセージを消費しています。私たちのアプリケーションは、存続期間の長いセッションを持つ複数のコンシューマーを作成します。それぞれの存続期間の長いセッションには、1 つのコンシューマーがあります。セッションとコンシューマはメイン スレッドで作成されますが、コンシューマ自体は別のスレッドでタイムアウトのある Receive() メソッドを使用してメッセージを消費しています。各コンシューマーには、それが機能する独自のスレッドがあります。受信が成功するたびに、メッセージを受信したコンシューマーを作成したセッションで Commit を呼び出します (見苦しい言い回しで申し訳ありません)。

問題は、このキューが (トピックからのブリッジによって) いっぱいになると、多くのメッセージがスタックすることです。どのスレッドもメッセージを受信できず、キューをブラウズしていることがはっきりとわかり、アプリケーションを再起動すると再処理されます。また、TIBCO コンソールで「show consumer」を実行すると、メッセージがスタックしたときに、送信されたメッセージの数が確認されたメッセージの数と等しくないことがわかります。

完全に道に迷っています。このキューのプリフェッチを有効または無効にしようとしました。どちらのソリューションも機能しませんでした。受信タイムアウトを 1 秒から 1 分に増やしましたが、保留中のメッセージの数が境界を超えている場合でも、メッセージがスタックします。

ヘルプ、ヒント、または提案は大歓迎です。

4

2 に答える 2

2

最終的に、4.4.3 バージョンの TIBCO EMS にバグがあり、一部のクライアント接続がフリーズすることが判明しました。5.x で修正されました。

于 2011-03-18T15:22:16.977 に答える
0

キュー レシーバーとして機能するスレッド コードのどこかに確認応答 \ コミットがありません。消費者コードを確認することをお勧めします..そしておそらくマルチスレッド. すべてのスレッドが一意のキューをリッスンしていると思います..

-hB

于 2011-01-04T09:36:19.767 に答える