0

同じキュー名が構成された 2 つの MQ キュー マネージャーがあります。どちらも異なるサーバーにデータを送信するように構成されています。現在、キュー・マネージャー (QM1) は停止しており (状況は即時に終了しました)、QM2 は実行中です

これで、私のプログラムはキューを開き、データを送信します。キュー・マネージャー名を指定しません。プログラムを実行すると、MQ 接続要求は を返しますerror 2059

私の質問は次のとおりです。

  1. 複数のキュー・マネージャーが同じキュー名を持つとどうなりますか?
  2. コードを変更せずに状況に対処する方法は?

説明があいまいでしたらご容赦ください。私のような初心者が何かを学べるように、誰かがリンクを提供してくれると助かります。

ありがとう

4

2 に答える 2

2

申請の詳細を教えていただけると助かります。サーバー・バインディングを使用しているか、キュー・マネージャーへのクライアント・モード接続を使用しているか。どのバージョンの MQ を使用していますか?

以下の情報は、MQ v7.x に有効です。

クライアント モードを使用している場合は、複数の CONNNAME を使用して接続できます。1 つのキュー マネージャーがダウンしている場合、アプリケーションは CONNAME リスト内の次のキュー マネージャーに接続します。クライアント モード接続を使用する場合の最も簡単な方法の 1 つは、MQSERVER 環境変数を定義し、複数の CONNNAME を指定することです。

SET MQSERVER=<channel name>/TCP/host1(port1), host2(port2)

例えば、両方のキュー・マネージャーがローカル・ホスト上にある場合:

SET MQSERVER=MYSVRCONCHN/TCP/localhost(1414),localhost(1415)

サーバー・バインディング・モードでは、キュー・マネージャー名が指定されていない場合、アプリケーションはデフォルトのキュー・マネージャーに接続しようとします。デフォルトのキュー マネージャーがダウンしている場合は、2059 がスローされます。

于 2013-01-18T09:35:04.070 に答える
1

あなたの説明は、あなたの要件を明確にするものではありません。

あなたが書いた:

私の質問は 1. 複数のキュー マネージャーが同じキュー名を持つとどうなりますか。

何もない。その通常のシナリオ。異なるキュー マネージャーが同じ名前のキューを持つ場合がありますが、あいまいさはありません。ただし、キュー・マネージャーが同じクラスター内にあり、キューもクラスター・キューである場合、シナリオは少し異なります。その後、すべてが要件と設計に依存します。

あなたが書いた:

2.コードを変更せずに状況に対処する方法

  1. 停止しているキュー マネージャーを実行します。

あなたが書いた:

これで、私のプログラムはキューを開き、データを送信します。キュー・マネージャー名を指定しません。

どのアプリケーションを使用していますか?クライアント アプリケーションの場合、キュー マネージャーのオブジェクトを使用してキューにアクセスします。キュー マネージャーの詳細を取得せず、キューの詳細のみを取得するアプリケーション (クライアント) を使用していると仮定しています。また、キュー マネージャーがコード内にハードコーディングされている可能性があります。そして、メッセージを最初にキュー マネージャー 1 のキューに送信し、次にキュー マネージャー 2 に送信します。ただし、この場合、キュー マネージャー 1 はダウンしています。

上記の場合は、アプリケーションのコードを変更する必要があります。コードの最初の行でエラーがスローされても、メッセージを 2 番目のキュー マネージャーに送信するためのコードを実行するような方法で例外処理を行う必要があります。

于 2013-01-18T11:28:53.313 に答える