使用Java,我想构建一个MQ消息,其中包含MQMD,RFH2 usr区域(具有很少的名称 - 值对)。 我能够连接到Qmgr并能够从一个队列中读取消息。 我想检索所有标头值(MQMD,RFH2 usr等)并根据检索到的消息构建一个这样的消息 有人可以帮我解决这个问题吗?
仅供参考:我正在使用Loadrunner工具进行负载测试,该工具将大量消息放入入站队列,它们将被处理并将被发送到出站队列。该工具将读取出站队列的当前队列深度,以检查总处理时间。
欢迎任何建议
答案 0 :(得分:0)
关于使用MQ的Java类处理MQ头,您应该阅读:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q030880_.htm
为了解决您的需求,我认为使用MQMD就足够了。 我要做的是记录来自MQMD的输入消息的PutTime和MsgId,以及相应输出消息的放置时间。 (我希望您的应用程序将CorrelId设置为响应消息的输入MsgId。)通过计算放置时间之间的经过时间,您将获得消息在队列中花费的时间和处理应用程序。
答案 1 :(得分:0)
MQRFH2标头可以被认为是一种心态。您可以使用带或不带MQRFH2标头的消息属性。
从Java代码中,执行:
MQMessage msg = new MQMessage();
msg.setStringProperty("propName", "propValue");
或者如果你想变得非常花哨,那就使用MQRFH2类。
MQMessage msg = new MQMessage();
MQRFH2 rfh2 = new MQRFH2();
rfh2.setFolderStrings(new String[]{"<d1>First</d1>", "<d2>Second</d2>", "<d3>Third</d3>"});
MQHeaderList putList = new MQHeaderList();
putList.add(rfh2);
msg.format = putList.updateHeaderChaining(CMQC.MQFMT_RF_HEADER_2);
就个人而言,第一个例子更容易和更清洁但是嘿,这就是我更喜欢的。