2014-03-12 42 views

回答

2

要通过PCF的消息发布到MQ队列管理器的命令,你可以看一下例子的/ opt/MQM/SAMP/PCF/* nix上或任何你已经安装了MQ样本。 (在Windows尝试 “C:\ Program Files文件(x86)的\ IBM \ WebSphere MQ的\工具\ PCF \样本”)。

要发出'从'代理的命令,您可以使用Java计算节点并使用所提供的Java包com.ibm.mq中的方法,例如发送查询来查找队列管理器上定义的队列:

import com.ibm.mq.headers.pcf.PCFMessageAgent; 
import com.ibm.mq.headers.pcf.PCFMessage; 
import com.ibm.mq.constants.MQConstants; 

try 
{ 
    // local queue manager 
    String queueManager = "QMGR_broker"; // local queue manager name 
    PCFMessageAgent agent = new PCFMessageAgent(queueManager); 

    // remote queue manager 
    String host = "localhost"; // host name of the queue manager machine 
    int port = 1414; // default queue manager tcp listener port 
    String channel = "SYSTEM.DEF.SVRCONN";//Default channel 
    PCFMessageAgent agent = new PCFMessageAgent(host, port, channel); 

    // Create the PCF message type for the inquire. 
    PCFMessage pcfCmd = new PCFMessage(MQConstants.MQCMD_INQUIRE_Q_NAMES); 
    // Queue name = wildcard. 
    pcfCmd.addParameter(MQConstants.MQCA_Q_NAME, "*"); 
    // Queue type = ALL. 
    pcfCmd.addParameter(MQConstants.MQIA_Q_TYPE, MQConstants.MQQT_ALL); 

    // Execute the command. The returned object is an array of PCF messages. 
    PCFMessage[] pcfResponse = pcfCM.agent.send(pcfCmd); 

    // e.g. extract the queue names from the response object 
    String[] names = (String[])pcfResponse[0].getParameterValue(MQConstants.MQCACF_Q_NAMES); 
} 

或者你可以把MQ队列的PCF消息(SYSTEM.ADMIN.COMMAND.QUEUE如果你对任何事情,但Z/OS)队列管理器监听的事件。然后,您还需要在消息中定义“回复”队列。您可以使用MQOutput节点从代理执行此操作。

但是这意味着您需要知道您要发送的exact format of the PCF message以及它的回复是什么样的,我认为使用提供的Java示例为您执行消息处理和格式化要容易得多。

相关问题