2016-06-15 8 views
0

私はvb6からvb.netにアプリケーションを移行しましたが、MQサーバーからメッセージを取得する以外はすべてうまくいきます.MQGetが呼び出されたときに2033エラー(メッセージなし)が発生します
vb6を動作させてMQに送信したキャプチャメッセージと、vb.netが動作していないので、助けてください。 enter image description herevb.netからMQサーバーに接続

'*********************************** 
    'Send(MQPUT) to MQSeries and CICS 
    '*********************************** 
    PutMsgOpts = MQPMO_DEFAULT 

    MsgDesc = MQMD_DEFAULT 
    MsgDesc.Persistence = MQPER_PERSISTENT 
    MsgDesc.MsgId = MQMI_NONE.Value 
    MsgDesc.CorrelId = "AMQ!NEW_SESSION_CORRELID" 'if using MQBridge 
    MsgDesc.ReplyToQ = gReplyToQ 
    MsgDesc.ReplyToQMgr = gMQRplyMgrName 
    MsgDesc.Format_Renamed = MQFMT_STRING 

    'sPutMsg is composed of 8 byte program name(host/cics) 
    ' plus data desired to pass as string only (dfcommarea) 
    '************ MAX LENGTH IS 32776 ******************* 
    sPutMsg = gCICSPrgName & gsHost_Msg 
    If Len(sPutMsg) <> 32768 Then 
     sPutMsg = sPutMsg & Space(32768 - Len(sPutMsg)) 
    End If 

    sMsgIdGet.Value = MsgDesc.MsgId 

    '******************************************* 
    'MQClose the queue for request sent to host 
    '******************************************* 
    'HOST-BYPASS 
    MQCLOSE(Hconn, Hobj, MQCO_NONE, cC, Reason) 
    'HOST-BYPASS 

    '********************************************************** 
    'MQOpen the queue for receiving the request from the host 
    '********************************************************** 

    'set up the queue name 
    ObjDesc = MQOD_DEFAULT 
    ObjDesc.ObjectName = gReplyToQ 

    'Open 
    'HOST-BYPASS 
    MQOPEN(Hconn, ObjDesc, MQOO_INPUT_AS_Q_DEF Or MQOO_FAIL_IF_QUIESCING, Hobj, cC, Reason) 
    'HOST-BYPASS 
    'Hconn is set by MQseries in the Connect 

    '************************************** 
    'Receive (MQGET) from MQSeries and CICS 
    '************************************** 
    GetMsgOpts = MQGMO_DEFAULT 
    GetMsgOpts.Options = MQGMO_WAIT Or MQGMO_CONVERT 
    GetMsgOpts.WaitInterval = 10000 '20 seconds 

    MsgDesc = MQMD_DEFAULT 
    MsgDesc.Format_Renamed = MQFMT_STRING 
    MsgDesc.Persistence = MQPER_PERSISTENT 
    MsgDesc.CorrelId = sMsgIdGet.Value 'set correlId with MQGET msgid returned 
    MsgDesc.MsgId = MQMI_NONE.Value 
    MsgDesc.ReplyToQ = gReplyToQ 
    MsgDesc.ReplyToQMgr = gMQRplyMgrName 

    '** sGetMsg is composed of 8 byte program name(host/cics) 
    '** plus data desired to pass as string only (dfcommarea) 

    '************ MAX LENGTH IS 32776 ******************* 
    sGetMsg = New String(" ", 32768) 

    'Command to receive from to MQSeries and CICS 
    retryCount = 0 
    cC = MQCC_OK + 1 
    Reason = 2033 
    Do While cC <> MQCC_OK And Reason = 2033 
     MQGET(Hconn, Hobj, MsgDesc, GetMsgOpts, Len(sGetMsg), sGetMsg, readlen, cC, Reason) 
     retryCount = retryCount + 1 
     If retryCount > 1 Then Exit Do 
    Loop 
    '************************ 
    'MQClose queue for input 
    '************************ 
    MQCLOSE(Hconn, Hobj, MQCO_NONE, cC, Reason) 
+0

は、それが実行して働いていました私はメッセージを受け取ります。 しかし、私は文字列としてメッセージを読むことができない別の問題があります。 1-System.Console.WriteLine(mqMsg.ReadString(mqMsg.MessageLength)) 2-message_string = mqMsg.ReadString(mqMsg.MessageLength) 最初の行は、コンソール行に必要なメッセージを書き込みます。私は "ストリームの終わりを超えて読むことができません"、何か助けてください? –

答えて

0

あなたが2033を取得した場合は、キューがあると知っているが、あなたが取得しようとしているメッセージではありません。 runmqscと一緒にMQ ExplorerまたはプレーンなMQサンプルを使用して、そのキューにメッセージがあるかどうかを確認し、存在する場合は、相関IDがプログラムが提供しているものと一致するかどうかを確認します。

メッセージがない場合は、送信しているCICSプログラムによって実際にメッセージが受信されたこと、およびプログラムが応答したかどうかを確認してください。

問題が発生する可能性がありますが、おそらく設定や設定に変更が加えられている可能性があります。異なる構成のチャネル・マネージャーなど、キュー・マネージャーの構成が異なる場合があります。チェーン全体を確認してください。 薄暗いMyNewCorrelIDを mqMsg.CorrelationId = Encoding.ASCII.GetBytes(MyNewCorrelID)私は、メッセージを入れても使用 mqMsg.CorrelationId = mqMsg.MessageId時に文字列= "AMQ NEW_SESSION_CORRELID!" のよう:

+0

ありがとうValerieLampkin、私はMQの初心者ですし、VB6とVB.netのメッセージの間の添付ファイルにあなたはVB6とVB.net、それについて多くを知らない、 vb.netで間違っています。 –

+0

私はメッセージ間の違いを見ることはできません。もちろん、スクリーンショットのすべてのビットに従っていません。あなたはメッセージを保存してファイルを比較して確かめることができます。しかし、私が言っているのは、重要なメッセージを作成して送信する方法だけでなく、セットアップ全体が重要であるということです。あなたはシステムの残りの部分について何も言っていません - あなたは同じセットアップや新しいものを使用していますか?それは同じキュー・マネージャーかどうかですか?リモートキューとチャネルはどのように設定されていますか?要するに、メッセージの流れに従って、間違った場所を見つけてください。 –

関連する問題