文章目录
一、异步请求业务逻辑
业务描述:
一个用户最多能同时发起三个异步请求,三个请求中有一个进行完后才允许发起下一个。
业务流程:
- 发一个异步请求,会返回一个jobid,后台job扫描到有异步请求后就会去处理
- 浏览器每5秒向服务器发送一次查询请求——查询job的处理情况,该查询请求reponse里面会包含三个异步请求的处理情况信息(最多三个),有jobId与对应的statusCd信息,然后根据对应的statusCd的值判断异步请求是否结束
- 查询job处理情况的请求 返回的报文如下
statusCd-A:job未处理
statusCd-P:job正在处理
statusCd-S:job处理成功
二、Jmeter脚本准备
1.思路
- 实现一个用户能最多同时发起三个异步请求,一个异步结束之后发起下一个:设置三个并行的线程组,一个线程组里放一个异步请求
- 如何判断异步请求是否结束:1)获取异步请求的jobid:json提取器 2)在查询job处理情况的请求中 根据jobid去获取对应的statusCd:json提取器+beanshell 3)while控制器判断statusCd的值,若statusCd != S,则让改请求一直循环
- 如何5秒发一次请求判断异步是否结束:while控制器+固定定时器
- 如何计入整个异步请求的响应时间:事务控制器 勾选Include duration of timer and pre-post processors in generated sample
2.脚本实现
脚本结构
json提取器
beanshell
//获取jobid对应的statusCd,声明为statusCd变量
String jobid