繁体   English   中英

如何通过 IBM MQ 使用 JMS 点对点消息传递模型测量 SuT 的响应(处理)时间?

[英]How can I measure the response (processing) times of a SuT using JMS Point-to-Point messaging model through IBM MQ?

我有一个设置了 2 个队列的远程 IBM MQ 实例。 在它们后面是一个被测系统,它总是接收放在 INBOUND.QUEUE 上的消息,做一些处理并将响应消息放在“OUTBOUND.QUEUE”上。

我想测试这个 SuT 的响应时间。 为了实现这一点,我需要设置这个场景:

  • JMeter 将一些带有 ID1 的消息发送到名为“INBOUND.QUEUE”的队列
  • 被测系统从“INBOUND.QUEUE”获取消息,进行一些处理并将响应放在“OUTBOUND.QUEUE”上
  • JMeter 检查并断言已在 X 秒内收到名为“OUTBOUND.QUEUE”的队列上 ID1 消息的响应
  • 在 Aggregate Report Listener 中查看响应时间结果

在 JMeter 中,我有一个与本文中描述的设置非常相似的设置,使用带有常规代码的 JSR223 测试元素与 IBM MQ 队列进行交互 - 如果我的理解是正确的,则通过JMS 与文章的不同之处在于,为了使用出站队列中的消息,我有另一个 setUp 线程组,它为我使用消息的“OUTBOUND.QUEUE”设置了另一个连接,另一个tearDown 线程组关闭了这个连接在末尾。

在高层次上,我的设置如下所示: 在此处输入图片说明 在此处输入图片说明

到目前为止它可以工作,但它盲目地消耗消息,我需要确保我正在读取(消耗)每个初始消息的响应延续,以便我可以计算每个完整请求 - 响应流的 SuT 的响应或处理时间. 我知道我可以为此目的使用JMS 关联 ID ,但我不知道如何使用。

  1. 我可以使用什么方法在消息创建和消费时获取此关联 ID?

  2. 我是否需要一些数据结构来在消息创建时放置所有关联 ID,以便我可以放置一个条件,例如 IF msg.getStringProperty("JMS_CorreationID") is IN 生成的 id 列表,将其从该数据结构中删除,然后获取JMS_IBM_PUTTIME 属性来确定“第一条”消息的时间戳,然后最终计算当前时间和第一条消息的时间之间的时间戳增量?

  3. 一旦我这样做了,我如何通过SampleResult类实例在第二个线程组中配置 JSR223 采样器(消费者),以便它报告的不是它自己的执行时间,而是 JMS_IBM_PUTTIME 和当前时间之间的增量(这将代表处理时间)?

  4. 最后,一旦完成,我如何才能将第二个 JSR223 采样器(消费者)包含在负载测试报告中?

这个逻辑是否正确/太复杂? 任何帮助或一些代码示例将不胜感激。

通常你应该在一个帖子中只问一个问题,我认为没有人愿意写一本书来回答你的所有问题(并且免费为你做你的工作)

  1. 如果要使用 JMS 关联 ID,则需要在生产者中显式调用Message.setJMSCorrelationID()函数,并在消费者中相应地将其读取为Message.getJMSCorrelationID()
  2. 是的,您可以使用线程间通信插件JMeter 属性类实例的props简写
  3. 您可以使用JSR223 PostProcessor ,将其添加为 JSR223 Sampler 的子项并使用prev.elapsedTime = 123456 ,将123456替换为具有给定相关 ID 的发送和接收消息之间的实际增量
  4. 您可以使用SampleResult.setIgnore()函数,这样您调用此函数的 JSR223 Sampler 既不会显示在 Listeners 中,也不会显示在 .jtl 结果文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM