1

以下のコードで MQ を接続しています。MQ に正常に接続できました。私の場合、メッセージを MQ に 1 分ごとに 1 回配置します。ケーブルを切断した後、ResonCode エラーが発生しますが、IsConnected プロパティは引き続き true を表示します。これは、接続がまだ接続されているかどうかを確認する正しい方法ですか? または、その周りに最善の方法があります。

アプリケーションが開始されたときに接続を開きたいと思います。

public static MQQueueManager ConnectMQ() {

if ((queueManager == null) || (!queueManager.IsConnected)||(queueManager.ReasonCode == 2009)) { queueManager = new MQQueueManager(); キューマネージャーを返します。}

4

1 に答える 1

2

WMQ クライアント接続の動作は、アイドル状態の場合、API 呼び出しが失敗するか接続がタイムアウトするまで、接続されているように見えます。そのため、get、put、または inquire 呼び出しが試行されて失敗するまで、isConnected() は true を報告する可能性が高く、その時点で QMgr は切断を報告します。

ここで考慮すべきもう 1 つのことは、2009 年だけがコードではないということです。たまたま接続が切断されたときに取得するものですが、QMgr のシャットダウン、チャネルのシャットダウン、およびさまざまなリソースやその他のエラーの接続コードがあります。

通常、一定の接続を維持する必要がある場合は、while ステートメント内にネストされた try/catch ブロック内に接続およびメッセージ処理ループをラップする必要があります。意図的な終了以外の例外をキャッチした場合は、オブジェクトと QMgr を閉じ、少なくとも 5 秒間スリープしてから、while の先頭までループします。タイトな再接続ループに巻き込まれ、QMgr で数百回の接続試行をスローすると、メインフレームの QMgr でさえ屈服する可能性があるため、スリープは非常に重要です。

別の方法は、v7 WMQ クライアントと QMgr を使用することです。この組み合わせにより、チャネル構成として自動再接続を構成できます。

于 2010-06-02T04:12:19.677 に答える