使用Java

时间:2016-04-19 14:25:42

标签: java ibm-mq loadrunner

使用Java,我想构建一个MQ消息,其中包含MQMD,RFH2 usr区域(具有很少的名称 - 值对)。 我能够连接到Qmgr并能够从一个队列中读取消息。 我想检索所有标头值(MQMD,RFH2 usr等)并根据检索到的消息构建一个这样的消息 有人可以帮我解决这个问题吗?

仅供参考:我正在使用Loadrunner工具进行负载测试,该工具将大量消息放入入站队列,它们将被处理并将被发送到出站队列。该工具将读取出站队列的当前队列深度,以检查总处理时间。

欢迎任何建议

图片: MQ Message headers Image

Unsupported Version at MQRFH2

2 个答案:

答案 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标头的消息属性。

有一个名为PROPCTL的队列属性。你可以阅读它here

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

就个人而言,第一个例子更容易和更清洁但是嘿,这就是我更喜欢的。