WebSphere Message Broker - 如何发送PCF消息

时间:2014-03-12 08:49:08

标签: ibm-mq broker

我们需要从MB流发出一些MQ命令。 要走的路是发送一个PCF命令,但我不知道如何创建它。 有什么指针吗? 塞巴斯蒂安。

1 个答案:

答案 0 :(得分:2)

要通过PCF消息向MQ队列管理器发出命令,您可以查看* nix上的/ opt / mqm / samp / pcf / samples中的示例或安装了MQ的位置。 (在Windows上尝试" C:\ Program Files(x86)\ IBM \ WebSphere MQ \ tools \ pcf \ samples")。

从'发出命令'代理您可以使用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);
}

或者,您可以将PCF消息放在MQ队列(SYSTEM.ADMIN.COMMAND.QUEUE,如果除了z / OS之外的其他任何内容)上,队列管理器正在侦听事件。然后,您还需要定义对'的回复。在你的消息中排队。您可以从具有MQOutput节点的代理执行此操作。

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