1

サーバー上の MQ にリモートで接続しており、自分のマシンに MQ クライアント v6.0 をインストールしました。メッセージをキューに入れることはできますが、同じキューからメッセージを取得できません。出力は「RC2033: MQRC_NO_MSG_AVAILABLE」です。

誰でも問題を見つけるのを手伝ってもらえますか?

これはキューのプロパティによるものでしょうか?

以下は、メッセージをポップするために使用しているコードです:

ポップ メッセージ:

queue = mqQMgr.AccessQueue("queue_name", MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED);
MQMessage queueMessage = new MQMessage();
queueMessage.Format = MQC.MQFMT_STRING;
MQGetMessageOptions queueGetMessageOptions = new MQGetMessageOptions();
queueGetMessageOptions.Options = MQC.MQGMO_WAIT;
queueGetMessageOptions.MatchOptions = MQC.MQMO_NONE;
queueGetMessageOptions.WaitInterval = 1000;
queue.Get(queueMessage, queueGetMessageOptions);
tbPoptxt.Text = "Message No" + count + ":" + queueMessage.ReadString(queueMessage.MessageLength);

プッシュコード

int optons = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;//Queue which opens with options output
        queue = mqQMgr.AccessQueue("queue_name", optons);
        MQMessage queueMessage = new MQMessage();
        queueMessage.WriteString(tbPushtxt.Text.ToString());
        queueMessage.Format = MQC.MQFMT_STRING;
        MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
        queuePutMessageOptions.Options = MQC.MQGMO_SYNCPOINT | MQC.MQGMO_FAIL_IF_QUIESCING;
        queue.Put(queueMessage, queuePutMessageOptions);

mqQMgr.Commit();

メッセージの書き込みとメッセージのポップに同じキューを使用しています

4

1 に答える 1

1

nmqsput および nmqsget c# のサンプルについては、サンプル ディレクトリを参照してください。

上記のコードを見ると、メッセージの取得に問題はないと思いますが、amqsputc もメッセージを見つけられなかったというコメントが続きます。パッティング側に問題があると思います。

これはばかげた質問に聞こえるかもしれませんが、メッセージがそこにあることをどうやって知ることができますか? プット後のカーデプスは?キューのステータスを確認します - コミットされていないメッセージはありますか? (私が以前に見たことの 1 つは、作業単位 (同期点) の下に置かれ、その後コミットされず、別のアプリケーションがそれを取得しようとすることです。

于 2013-11-05T22:48:16.597 に答える