我有一个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