2014-03-12 41 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示例爲您執行消息處理和格式化要容易得多。

相關問題