2

Windowsサービスの一部として実行されている汎用の「datapump」があります。MQSeriesキューからの新しい着信メッセージを監視しているキューごとに、そのインスタンスが存在します。Getメソッドが失敗した場合、キューの名前を表示できるようにしたいので、catchハンドラーで使用できるデバッグ変数を作成しようとしています。以下のdebugQueueInfoを設定する行に2068MQRC_SELECTOR_NOT_FOR_TYPEが表示されます。

    debugLocation = "queueGetName";
    debugQueueInfo = "Queue:" + queueIn.RemoteQueueManagerName + ":"
                          + queueIn.RemoteQueueName;

    debugLocation = "queueGetMessage";
    queueIn.Get(mqMessage, mqGetMessageOptions);

現在のキューマネージャー名とキュー名を取得するにはどうすればよいですか?変数queueInはタイプIMB.WMQ.MQQueueであり、.NETAPIを使用しています。

キューがオブジェクト構築されたとき、私は以下を使用しました:

queueOptions = MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INQUIRE + MQC.MQOO_BROWSE; 
MQQueue mqQueue = qmgr.AccessQueue(mqCloneSpecs.queueName, queueOptions);

2068年のエラーコードのドキュメントに基づいて、MQC.MQOO_BROWSEを追加すると問題が解決すると思いましたが、修正されませんでした。

4

1 に答える 1

3

RemoteQueueManagerNameとRemoteQueueNameは、リモートキューに対してのみ有効です。これが、2068を取得する理由だと思います。MQOO_BROWSEotpionは、キューからメッセージを削除せずにメッセージを取得するためのものです。

プロパティを使用Nameして、次のようなキュー名を取得できます。

debugQueueInfo = "Queue:" + queueIn.Name;

MQQueueクラスには、キュー・マネージャー名を取得するためのプロパティーがありません。MQQueueManagerインスタンスから取得する必要があります。

于 2013-03-19T04:24:01.353 に答える