2

私はMQMessageブローカーにかなり慣れていません。私のプロジェクトでは、xmlメッセージを送信したいと思います。すべて問題ありませんが、メッセージが500バイトを超えると、私のコードは壊れたメッセージをキューに送信します。私がしているのは

//queueManager has been initialized in the class constructor and connected to a channel.
        public MQResponse WriteMsg(string QueueName, string strInputMsg)
        {
            MQResponse response = new MQResponse();
            try
            {
                queue = queueManager.AccessQueue(QueueName,
                    MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING );

                queueMessage = new MQMessage();
                queueMessage.DataOffset = 0;
                //queueMessage.MessageLength = 2000000;
                queueMessage.ResizeBuffer(6 * strInputMsg.Length);
                queueMessage.WriteString(strInputMsg);
                queueMessage.Format = MQC.MQFMT_STRING;

                queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);
                response.Message = "Message sent to the queue successfully";
                response.Status=MQResponseStatus.WriteSuccessful;
            }
            catch (MQException MQexp)
            {
                response.Message = "Exception: " + MQexp.Message;
                response.Status=MQResponseStatus.WriteFail;
                response.CatchedException=MQexp;
            }
            catch (Exception exp)
            {
                response.Message = "Exception: " + exp.Message;
                response.Status=MQResponseStatus.WriteFail;
                response.CatchedException=exp;
            }
            return response;
        }

メッセージ全体を送信できるように、queueMessageを正しく初期化する必要があると思います。

4

1 に答える 1

3

まず第一に、メッセージが壊れているとどのように判断しましたか? 送信されたメッセージを受信して​​元のメッセージと比較しようとしましたか、または MQExplorer などの手段を使用してメッセージを表示しましたか。デフォルトでは、MQExplorer はメッセージの最初の 1000 バイトを表示します。さらに表示するには、パネルのMax data bytes displayed設定を変更する必要があります。Window/Preferences/Messages

WebSphere MQ は、最大 100 MB のサイズのメッセージを処理できます。

上記のコード スニペットについて: メッセージを作成して送信するには、数行のコードで十分です。

            queueMessage = new MQMessage();
            queueMessage.Format = MQC.MQFMT_STRING; 
            queueMessage.WriteString(strInputMsg);
            queuePutMessageOptions = new MQPutMessageOptions();
            queue.Put(queueMessage, queuePutMessageOptions);
于 2013-03-10T09:18:32.567 に答える