2016-09-13 2 views
2

Я пытался читать и писать сообщения в MQ из UFT. Я использую экземпляр фабрики dotnet. я дошел до точки, где я могу подключиться к MQ, пока сталкиваюсь с проблемой при доступе к очереди, чтении и записи сообщений.Подключение к IBM MQ от UFT

Код выглядит следующим образом.

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 'дает истинное

Теперь я тусклый использовать метод

public MQQueue AccessQueue(string queueName, int openOptions) 

экземпляра IBM.WMQ.MQQueueManager. может кто-то наставит меня в делать то же самое, и дайте мне знать, как я могу нажать сообщения и читать сообщения из указанной очереди

Спасибо

ответ

2

После многих прибегая к помощи и чтения IBM документации, я был в состоянии поставить и получать сообщения в MQ от UFT. .. Ниже в фрагменте кода, который работал на меня .. Надеюсь, это поможет кому-то. Я работал над PUT и GET отдельно, следовательно, в коде может быть некоторое повторение.

Необходимым условием для этого .. Вы должны загрузить клиент MQ с сайта IBM и установить его на компьютер, на котором установлен UFT .. 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 

Теперь для получения сообщения из 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 
Смежные вопросы