我有一個VB6應用程序與MQSeries自動化類爲ActiveX。問題是當我寫入隊列中的消息時。我使用此代碼:IBM MQSeries ActiveX寫入消息錯誤
這是我如何打開連接並相對隊列:
Set MQSess = New MQSession
//Access Queue
Set QMgr = MQSess.AccessQueueManager(QueueManagerName)
Dim Queue As MQQueue
Dim msg As MQMessage
Dim pmo As MQPutMessageOptions
Dim ArrCar() As Byte
Set pmo = New MQPutMessageOptions
Set Queue = QMgr.AccessQueue(QueueName, OpenOption , RemoteQueueManagerName)
//OpenOption is a integer with value of 16 (MQOO_OUTPUT)
strMsgAppo = Translate("*MESSAGE_TO_INSERT*", ASCII_To_EBCDIC_Table())
ReDim ArrCar(Len(strMsgAppo) - 1)
For lngI = 1 To Len(strMsgAppo)
ArrCar(lngI - 1) = Asc(Mid(strMsgAppo, lngI, 1))
Next lngI
Call msg.Write(ArrCar) //Write the ByteArray
Call Queue.Put(msg, pmo)
的ASCII_To_EBCDIC_Table是用於改變編碼的功能。
我從MQ讓我的錯誤是:
MQAX200.MQMessage ::寫CompletionCode = 2,ReasonCode = 2043,ReasonName = MQRC_OBJECT_TYPE_ERROR
是否有人使用此ActiveX和可以幫助我如何在隊列中寫消息?
根據文檔,Message :: Write不會拋出2043.如果您說文檔錯誤,請告訴我,以便我可以對其進行更改。最好我可以告訴,有一個隱含的OPEN出錯了,否則這種情況會在隨後的PUT上發生。我很喜歡它是OP更新的代碼或跟蹤的其餘部分。 – 2011-05-11 21:08:06
感謝您提供關於字符集的提示,現在我將做出此更改並將生成的可執行文件發送給生產組,以便他們發回日誌以查看發生了什麼。我給你的兩個問題: 1)是否需要轉換爲ebcdic? 2)我已經看到,我只打開OUTPUT選項的隊列,也許可以這是拋出錯誤2043? 對不起,這個程序不是由我做的,我只是爲了解決這個錯誤...這是我第一次使用MQ ... – 2GDev 2011-05-12 08:56:18
@ T.Rob感謝您添加鏈接。因爲IBM將事情做了很多,當然還有不同版本的WebSphere MQ文檔。但是一個鏈接比沒有鏈接要好。 – Bob77 2011-05-12 09:15:30