如何使用JMeter向IBM MQ发送XML文件,JSR223脚本报错如何解决
JMeter向IBM MQ发送本地XML文件的实现方案
报错原因
你的代码存在两处问题:
- 发送逻辑的代码存在语法错误:
def msg = sess.createTextMessage(payload)})末尾多了冗余的})字符,触发Groovy编译失败,这是当前报错的直接原因 - 拆分两个JSR223 Sampler传递变量可能存在上下文加载顺序问题,容易出现变量读取异常
完整实现步骤
保持你之前已跑通的IBM MQ连接初始化逻辑不变,直接在JSR223 Sampler中使用如下合并后的Groovy代码即可:
// 读取本地XML文件,UTF-8编码需和你的XML文件实际编码保持一致 String fileContents = new File('./test.xml').getText('UTF-8') // 构造MQ文本消息并发送 def payload = fileContents def msg = sess.createTextMessage(payload) def start = Instant.now() producer.send(msg) // 可选:存入变量用于后续调试校验 vars.put("send_xml_content", fileContents)
也可以直接调用JMeter内置函数读取文件,写法更简洁:
def payload = "${__FileToString(test.xml,UTF-8,)}" def msg = sess.createTextMessage(payload) def start = Instant.now() producer.send(msg)
注意事项
- 若XML文件存放路径不确定,建议使用绝对路径读取,避免JMeter工作目录变动导致找不到文件
- 若XML包含中文等特殊字符,需保证读取编码和XML文件本身的编码完全一致,避免发送后乱码
- JSR223代码中Groovy变量直接调用即可,不需要额外添加多余的引号包裹
内容的提问来源于stack exchange,提问作者hk05
相关产品推荐
相关产品推荐

