WebSphere Message Broker - how to send a PCF message

偶尔善良 提交于 2020-01-29 19:02:27

问题


We need to issue some MQ commands from a MB flow. The way to go is to send a PCF command, but I dont know how to create it. Any pointers ? Sebastian.


回答1:


To issue commands to an MQ Queue Manager via PCF messages you can look at the examples in /opt/mqm/samp/pcf/samples on *nix or where ever you have installed MQ. (On Windows try "C:\Program Files (x86)\IBM\WebSphere MQ\tools\pcf\samples").

To issue the commands 'from' broker you can use a Java compute node and use methods in the supplied Java package com.ibm.mq, for example sending a query to find out what queues are defined on a queue manager:

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);
}

Alternatively you can put the PCF messages on the MQ queue (SYSTEM.ADMIN.COMMAND.QUEUE if you're on anything but z/OS) that the queue manager is listening for events on. You will then also need to define a 'reply to' queue in your message. You can do this from broker with an MQOutput node.

However that means you need to know the exact format of the PCF message that you want to send and what it's reply will look like, I think it is much easier to use the provided Java examples to do the message processing and formatting for you.



来源:https://stackoverflow.com/questions/22346235/websphere-message-broker-how-to-send-a-pcf-message

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!