关于结合Groovy、MQ Broker与JMeter搭建测试计划的技术咨询
JMeter测试计划配置问题求助
背景与问题
- 本地部署WebSphere MQ服务器,同时存在接收HTTP请求并返回响应的Endpoint,需监控请求响应耗时。
- 使用JSR223 Sampler从队列消费消息,提取内容存入messageText变量,尝试通过CSV数据集配置将变量传入HTTP请求线程失败,请求无法正常执行。
- 当前JSR223消费线程完成迭代后才会执行HTTP请求,不符合预期流程。
需求与疑问
- 需配置控制器,使每个虚拟用户在每次迭代中依次完成MQ消息消费 → HTTP请求发送 → 响应耗时记录的流程。
- 性能测试是否需以批量模式运行?对应的执行策略是什么?
- 认证Token每2小时过期,需模拟真实用户流程:先认证获取Token,再发送请求,该如何配置?
附:MQ消息消费Groovy代码
import com.ibm.mq.* def strQueueManagerName = "QM2" def strChannelName = "CHANNEL1" def strQueueName = "QUEUE1" def strServerName = "127.0.0.1" def intPort = 1414 MQEnvironment.hostname = strServerName MQEnvironment.channel = strChannelName MQEnvironment.port = intPort MQEnvironment.properties[MQC.TRANSPORT_PROPERTY] = MQC.TRANSPORT_MQSERIES try { def mqQueueManager = new MQQueueManager(strQueueManagerName) // Define a Queue def queue = mqQueueManager.accessQueue( strQueueName, MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING ) def getOptions = new MQGetMessageOptions() def retrievedMessage = new MQMessage() // Read a message from the queue queue.get(retrievedMessage, getOptions) // Process the retrieved message def messageBytes = new byte[retrievedMessage.messageLength] retrievedMessage.readFully(messageBytes) def messageText = new String(messageBytes, "UTF-8") // Assuming the message is encoded in UTF-8 // Log the message log.info("Received message: " + messageText) // Save the messageText to a variable vars.put("messageTextVariable", messageText) // Mark the message as removed from the queue retrievedMessage.messageFlags = MQC.MQMF_NONE retrievedMessage.correlationId = MQC.MQCI_NONE queue.put(retrievedMessage) queue.close() mqQueueManager.disconnect() } catch (Exception ex) { log.error(ex.message) }
内容的提问来源于stack exchange,提问作者Randy mangal
相关产品推荐
相关产品推荐

