我有点受约束。我试图通过jms读取WMQ的消息,然后将其转换为pcf消息进行处理。我只能在此找到一个资源而且它没有帮助[{3}}的底部]
我尝试在上面的文档中实现该技术,但每次我都行
PCFMessage response = new PCFMessage(dataInput);
我抛出MQRC 3013 - MQRCCF_STRUCTURE_TYPE_ERROR
这是我的代码看起来的方式,也许你可以看到我不会做的事情。
BytesMessage message = null;
do {
// The consumer will wait 10 seconds (10,000 milliseconds)
message = (BytesMessage) myConsumer.receive(10000);
// get the size of the bytes message & read into an array
int bodySize = (int) message.getBodyLength();
byte[] data = new byte[bodySize];
message.readBytes(data, bodySize);
// Read into Stream and DataInput Stream
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInput dataInput = new DataInputStream(bais);
// Pass to PCF Message to process
//MQException.logExclude(new Integer(2079));
PCFMessage qStatsPcf = new PCFMessage(dataInput);
session.commit();
if (message != null) {
processMessage(qStatsPcf);
}
} while (message != null);
myConsumer.close();
对T.Rob的回答进行了一些更新。 我目前正在运行MQ 7.0。这是一种类型的东西,我目前无法升级。
至于我想要做什么,我从SYSTEM.ADMIN.STATISTICS.QUEUE中提取消息,我想解析该信息以用于审计目的。转换为PCF消息的原因是我希望从这些消息中提取一些PCF参数 - 例如.getParameter(PCFConstants.MQIAMO_PUTS)
我无论如何都不会尝试向MQ发送消息,只需关闭消息并处理它们。
答案 0 :(得分:4)
这个问题有几个问题:
由于无法用解决方案回答问题,我会根据您猜测的问题提供一些建议。
MQC**
的条目。 MQ v8.0客户端是最新的,它是SupportPac MQC8。答案 1 :(得分:1)
我的2美分......
为什么使用JMS检索PCF消息?
MQ Java最适合处理所有统计信息和事件消息。我的建议是使用MQQueueManager对象并从SYSTEM.ADMIN.STATISTICS.QUEUE中检索MQMessage并将其传递给PCFMessage构造函数。
我没有编译或测试以下内容,但它给出了一个大纲。
//no try catch block to keep it simple
//assumed MQQueueManager (qmgr object) is already created
//assumed statQueue is available through qmgr.accessQueue() method
do {
MQMessage message = new MQMessage();
//gmo as CMQC.MQGMO_FAIL_IF_QUIESCING | CMQC.MQGMO_WAIT | CMQC.MQGMO_SYNCPOINT | CMQC.MQGMO_CONVERT;
message = statQueue.get(message, gmo);
// Pass to PCF Message to process
PCFMessage qStatsPcf = new PCFMessage(message);
qmgr.commit();
if (message != null) {
processMessage(qStatsPcf);
}
} while (message != null);
statQueue.close();
qmgr.close();