Ibm mq 从UFT连接到IBM MQ

Ibm mq 从UFT连接到IBM MQ,ibm-mq,qtp,hp-uft,Ibm Mq,Qtp,Hp Uft,我一直在尝试从UFT向MQ读写消息。我正在使用dotnet工厂实例。当我在访问队列和读写消息时遇到问题时,我已经达到了能够连接到MQ的程度 代码如下 strQMgrName = "queue manager name" strMQMDllPath = "C:\\Program Files (x86)\\IBM\WebSphere MQ\\bin\\amqmdnet.dll" Set oMqEnvironment = DotNetFactory.CreateInstance("IBM.WMQ.MQ

我一直在尝试从UFT向MQ读写消息。我正在使用dotnet工厂实例。当我在访问队列和读写消息时遇到问题时,我已经达到了能够连接到MQ的程度

代码如下

strQMgrName = "queue manager name"
strMQMDllPath = "C:\\Program Files (x86)\\IBM\WebSphere MQ\\bin\\amqmdnet.dll"
Set oMqEnvironment = DotNetFactory.CreateInstance("IBM.WMQ.MQEnvironment",strMQMDllPath)
oMqEnvironment.Hostname = "host name"
oMqEnvironment.Port = "port number"
oMqEnvironment.Channel = "channel name"


Set oMQC = DotNetFactory.CreateInstance("IBM.WMQ.MQC",strMQMDllPath)
' qmanager name,channel name, connection name
Set oMqQMgr = DotNetFactory.CreateInstance("IBM.WMQ.MQQueueManager",strMQMDllPath,strQMgrName)
oMqQMgr.isConnected'为true

现在我想用这个方法

public MQQueue AccessQueue(string queueName, int openOptions)
实例IBM.WMQ.MQQueueManager的。是否有人可以指导我做同样的事情,并让我知道如何推送消息和读取所述队列中的消息


谢谢你

在大量搜索和阅读IBM文档之后,我能够从UFT在MQ中输入和获取消息。。下面是对我有用的代码片段。。希望这对某人有帮助。。我正在分别处理PUT和GET,因此代码中可能会有一些重复

这方面的先决条件。。您必须从IBM站点下载MQ客户端,并将其安装在安装了UFT的PC上。。IBM MQ客户端是一个免费软件

  Dim oMQEnvironment
    Dim oMQM
    Dim oMQC
    Dim oMQMessage
    Dim oMQQueue
    Dim intOpenOptions


    strMQMDLLPath = "C:\\Program Files (x86)\\IBM\WebSphere MQ\\bin\\amqmdnet.dll"
    strHostName= "Host Name"
    intPort = "Port Number"
    strChannel ="Channel Name"
    strMessage ="UFT Test Message"
    strMQManager = "Quemanager Name"
    strMessageQueue = "Queue Name"
这部分代码是公然从网上的一篇帖子中抄袭的。一旦我再次找到它,我会发布链接

'用于应用程序(UFT)在客户端模式下连接到队列管理器

 Set oMQEnvironment = DotNetFactory.CreateInstance("IBM.WMQ.MQEnvironment",strMQMDLLPath)

    'Initize the Environment
    With oMQEnvironment
    .HostName = strHostName 
    .Port = intPort
    .Channel = strChannel 
    End with

    On Error Resume Next
    'Create MQ Instatnces
    Set oMQM = DotnetFactory.CreateInstance("IBM.WMQ.MQQueueManager",strMQMDLLPath)

    'Check if MQM Connected
    If Err.Number <> 0 Then
        Reporter.ReportEvent micFail , "Step: Creating MQM Object" , "Unable to Connect to MQ Manager at" & strHostName
        'Exit Test
    End If

    Set oMQC = DotnetFactory.CreateInstance("IBM.WMQ.MQC",strMQMDLLPath)
    Set oMQMessage = DotnetFactory.CreateInstance("IBM.WMQ.MQMessage",strMQMDLLPath)

    'Declare Q open options
    intOpenOptions = oMQC.MQOO_OUTPUT or oMQC.MQOO_FAIL_IF_QUIESCING ' 16 + 8192

    'Open the Q to post the messages
    If strRemoteMQManager = "" Then
    Set oMQQueue = oMQM.AccessQueue(strMessageQueue , intOpenOptions)
    Else 
    Set oMQQueue = oMQM.AccessQueue(strMessageQueue , intOpenOptions ,strRemoteMQManager, "","" )
    End If

    'Format Message
    With oMQMessage
    .CharacterSet = 819
    .WriteString(strMessage)
    End with

    'Post Message
    With oMQQueue
    .Put(oMQMessage)
    .Close()
    End With 
Set oMQEnvironment=DotNetFactory.CreateInstance(“IBM.WMQ.MQEnvironment”,strmqmdlllpath)
“初始化环境
环境恶劣
.HostName=strHostName
.Port=intPort
.Channel=strChannel
以
出错时继续下一步
'创建MQ Instantnces
设置oMQM=DotnetFactory.CreateInstance(“IBM.WMQ.MQQueueManager”,strmqmdlllpath)
'检查MQM是否已连接
如果错误号为0,则
Reporter.ReportEvent micFail,“步骤:创建MQM对象”,“无法连接到位于的MQ管理器”&strHostName
“退出测试”
如果结束
设置oMQC=DotnetFactory.CreateInstance(“IBM.WMQ.MQC”,strmqmdlllpath)
设置oMQMessage=DotnetFactory.CreateInstance(“IBM.WMQ.MQMessage”,strmqmdlllpath)
'声明Q打开选项
InOpenOptions=oMQC.MQOO_输出或oMQC.MQOO_失败,如果_静止'16+8192
'打开Q以发布消息
如果stremotemqmanager=“”,则
设置oMQQueue=oMQM.AccessQueue(strMessageQueue,intOpenOptions)
其他的
设置oMQQueue=oMQM.AccessQueue(strMessageQueue、intOpenOptions、strRemoteMQManager、“”、“”)
如果结束
'格式化消息
用oMQMessage
.CharacterSet=819
.WriteString(strMessage)
以
"留言",
使用oMQQueue
.Put(oMQMessage)
.Close()
以
现在开始从MQ获取消息

Dim oMQEnvironment
Dim oMQM
Dim oMQC
Dim oMQMessage
Dim oMQQueue

strMQMDLLPath = "C:\\Program Files (x86)\\IBM\WebSphere MQ\\bin\\amqmdnet.dll"
strHostName= "host name"
intPort = "port number"
strChannel ="channel name"
strMessage ="UFT Test Message"
strMessageQueue = "message queue intended to access"
strMQManager = "mq manager name"
strRemoteMQManager=""

'Create MQ Instances
Set oMQC = DotnetFactory.CreateInstance("IBM.WMQ.MQC",strMQMDLLPath)

'set the properties of the Queue manager
Set properties = DotNetFactory.CreateInstance("System.Collections.Hashtable")
                properties.Add oMQC.HOST_NAME_PROPERTY, strHostName
                properties.Add oMQC.PORT_PROPERTY, intPort
                properties.Add oMQC.CHANNEL_PROPERTY, strChannel

'access the queue manager 
Set oMQM = DotnetFactory.CreateInstance("IBM.WMQ.MQQueueManager",strMQMDLLPath,strMQManager,properties)

'here We are trying to browse the message one by one and keep the messages on the queue.

'Declare Q open options
Set oMQQueue = oMQM.AccessQueue(strMessageQueue,oMQC.MQOO_BROWSE)
Set oMQGetMessageOptions = DotNetFactory.CreateInstance("IBM.WMQ.MQGetMessageOptions",strMQMDLLPath) 
oMQGetMessageOptions.Options = oMQC.MQGMO_BROWSE_FIRST

Set oMQMessage = DotnetFactory.CreateInstance("IBM.WMQ.MQMessage",strMQMDLLPath)

    oMQQueue.Get oMQMessage,oMQGetMessageOptions

Set mqGetNextMsgOpts = DotNetFactory.CreateInstance("IBM.WMQ.MQGetMessageOptions",strMQMDLLPath) 
mqGetNextMsgOpts.Options = oMQC.MQGMO_BROWSE_NEXT

browseMessages = true

Do while browseMessages
        on error resume next
        messageText = oMQMessage.ReadString(oMQMessage.MessageLength)
        'Print messageText
        Set oMQMessage = DotnetFactory.CreateInstance("IBM.WMQ.MQMessage",strMQMDLLPath)
        oMQQueue.Get oMQMessage,mqGetNextMsgOpts
        if Err.Number <> 0 then browseMessages =false   
        'Clear both MsgID and CorrelID for next use.
        oMQMessage.MessageId = oMQC.MQMI_NONE
        oMQMessage.CorrelationId = oMQC.MQCI_NONE           
Loop 

'Cleanup
Set oMQQueue = Nothing 
Set oMQMessage= Nothing 
Set oMQOpenOptions= Nothing 
Set oMQM= Nothing 
Set oMQEnvironment = Nothing
Dim oMQEnvironment
Dim oMQM
Dim oMQC
模糊oMQMessage
Dim oMQQueue
strMQMDLLPath=“C:\\ProgramFiles(x86)\\IBM\WebSphere MQ\\bin\\amqmdnet.dll”
strHostName=“主机名”
intPort=“端口号”
strChannel=“频道名称”
strMessage=“UFT测试消息”
strMessageQueue=“要访问的消息队列”
strMQManager=“mq管理器名称”
stremotemqmanager=“”
'创建MQ实例
设置oMQC=DotnetFactory.CreateInstance(“IBM.WMQ.MQC”,strmqmdlllpath)
'设置队列管理器的属性
Set properties=DotNetFactory.CreateInstance(“System.Collections.Hashtable”)
属性。添加oMQC.HOST\u NAME\u属性,strHostName
属性。添加oMQC.PORT\u属性,intPort
属性。添加oMQC.CHANNEL\u属性,strChannel
'访问队列管理器
设置oMQM=DotnetFactory.CreateInstance(“IBM.WMQ.MQQueueManager”、strmqmdlllpath、strMQManager、properties)
'在这里,我们尝试逐个浏览消息,并将消息保留在队列中。
'声明Q打开选项
设置oMQQueue=oMQM.AccessQueue(strMessageQueue,oMQC.MQOO_BROWSE)
设置oMQGetMessageOptions=DotNetFactory.CreateInstance(“IBM.WMQ.MQGetMessageOptions”,strmqmdlllpath)
oMQGetMessageOptions.Options=oMQC.MQGMO\u首先浏览
设置oMQMessage=DotnetFactory.CreateInstance(“IBM.WMQ.MQMessage”,strmqmdlllpath)
获取oMQMessage,oMQGetMessageOptions
设置mqGetNextMsgOpts=DotNetFactory.CreateInstance(“IBM.WMQ.MQGetMessageOptions”,strmqmdlllpath)
mqGetNextMsgOpts.Options=oMQC.MQGMO\u浏览\u下一步
browseMessages=true
在浏览信息时执行此操作
出错时继续下一步
messageText=oMQMessage.ReadString(oMQMessage.MessageLength)
'打印消息文本
设置oMQMessage=DotnetFactory.CreateInstance(“IBM.WMQ.MQMessage”,strmqmdlllpath)
获取oMQMessage,mqGetNextMsgOpts
如果错误号为0,则browseMessages=false
'清除MsgID和CorrelID以供下次使用。
oMQMessage.MessageId=oMQC.MQMI_NONE
oMQMessage.CorrelationId=oMQC.MQCI_NONE
环
"清理",
设置oMQQueue=Nothing
设置oMQMessage=Nothing
设置oMQOpenOptions=Nothing
设置oMQM=Nothing
设置oMQEnvironment=Nothing