Jmeter 动态 JMS 队列名称值不会从 CSV 数据配置中更新
Posted
技术标签:
【中文标题】Jmeter 动态 JMS 队列名称值不会从 CSV 数据配置中更新【英文标题】:Jmeter Dynamic JMS queue name values are not updated from CSV Data Config 【发布时间】:2021-12-29 08:41:00 【问题描述】:我正在尝试使用 Jmeter JMS 执行性能测试,我有一个 csv 文件以表格形式提供测试数据 APPLICATIONAME,SEND_QUEUE,RECV_QUEUE,MSG_TO_SEND 我有大约 300-400 条消息,我的测试计划如下所示
我已经尝试设置属性变量 tqueue_get, tqueue_put 遵循以下帖子 JMeter JMS point to point sampler not taking parameters
的建议
奇怪的是,当我检查日志时,我可以在调试采样器中看到变量 tqueue_get 和 tqueue_put 设置正确,但 JMS 测试采样器要么采用错误的队列名称(好像读取了上一行或其他内容),要么像下面这样根本没有名字
有人能指出我正确的方向吗?
【问题讨论】:
【参考方案1】:根据JSR223 Sampler 文档:
JSR223 测试元素有一个特性(编译)可以显着提高性能。要从此功能中受益:
使用脚本文件而不是内联它们。如果此功能在 ScriptEngine 上可用,这将使 JMeter 编译它们并缓存它们。 或使用脚本文本并检查缓存已编译的脚本(如果可用)属性。使用此功能时,请确保您的脚本代码不直接在脚本代码中使用 JMeter 变量或 JMeter 函数调用因为缓存只会缓存第一个替换。而是使用脚本参数。
所以将您的 __setProperty() function 电话替换为以下内容:
props.put('tqueue_put', vars.get('mq_queue_put'))
props.put('tqueue_put', vars.get('mq_queue_get'))
有关这些props
、vars
和其他简写的更多信息,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy
还要注意属性是全局的,因此在并发的情况下,2 个线程将写入同一个队列,因此您可能需要添加 current thread number 作为属性前缀或后缀
【讨论】:
以上是关于Jmeter 动态 JMS 队列名称值不会从 CSV 数据配置中更新的主要内容,如果未能解决你的问题,请参考以下文章