如何在Java中找到远程MQ队列的本地传输队列?

时间:2015-06-29 17:17:38

标签: java ibm-mq mq

在我的Java应用程序中,我使用

获取Imports System.IO Public Class Form1 Private Sub Form1_FormLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load uxNote.Text = "Starting" End Sub Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown RunApp() End Sub Sub RunApp() Dim b As New BostonWorkStation Dim myHandle As Long b.Shell_("C:\Software\Application.exe") b.Activate("AppCaption", True) b.Connect("AppCaption", enumStreamType1.stWindows) uxNote.Text = myHandle.ToString Me.Refresh() Application.DoEvents() b.Wait(2) b.Pause("@378,423") b.Tab_("user") b.Enter("password") b.Wait(2) b.Shell_("C:\Software\Application2.exe") b.Activate("App2Caption", True) b.Wait(4) b.Connect("App2Caption", enumStreamType1.stWindows) uxNote.Text = myHandle.ToString Me.Refresh() Application.DoEvents() b.Wait(4) b.Smart.Create("App2Caption@726,1088", -1024, -633, 0) b.Smart.Click(False, False) b.Wait(3) b.Activate("Patient Lookup", True) b.Connect("Patient Lookup", enumStreamType1.stWindows) uxNote.Text = myHandle.ToString Me.Refresh() Application.DoEvents() b.Wait(1) b.Pause("@104,423") ProcessPatients(b) Me.Close() End Sub Sub ProcessPatients(ByVal w As BostonWorkStation) Dim ID As String Dim record() As String Dim sr As New StreamReader("my path for csv or txt file") Do While Not sr.EndOfStream record = sr.ReadLine.Split(CChar("|")) ID = record(0) ' <-- grab your "ID" from somewhere in "record" w.Enter(ID) w.Wait(2) 'some more code steps here specific to what should be done once patient id has been selected Loop sr.Close() End Sub End Class 对象
MQQueue

队列是远程队列。有没有办法获得相应的本地传输队列?

(使用MQQueue tQueue = qManager.accessQueue(tqName, tqOptions);

由于

2 个答案:

答案 0 :(得分:3)

是的,使用runmqsc控制台。

首先在命令提示符下运行

runmqsc <qmgr>

控制台开启后运行

dis qr<remote q> XMITQ

显示远程队列定义使用的传输队列。

<强>更新

另一种方法是使用PCF类。

      PCFMessageAgent pcfma = new PCFMessageAgent("QM");
      PCFMessage pcfCmd = new PCFMessage(MQConstants.MQCMD_INQUIRE_Q);
      pcfCmd.addParameter(MQConstants.MQCA_Q_NAME, "Q.REMOTE");
      PCFMessage[] pcfResponse = pcfma.send(pcfCmd);
      String xmitQName = (String) pcfResponse[0].getParameterValue(MQConstants.MQCA_XMIT_Q_NAME);
      System.out.println("XmitQ name " + xmitQName);

答案 1 :(得分:1)

当MQ打开队列时,它会运行名称解析过程来解析要打开的本地队列。如果应用程序打开QRemote,它通常会解析为传输队列。

找出已解析队列的名称很简单。成功打开队列后,只需向MQ询问:

public java.lang.String getResolvedQName( )