如何在JMeter中测试异步回调?

问题描述 投票:1回答:2

我在我的API中使用WebHooks。因此,一旦处理了请求,我们的REST服务就会将响应发回给请求中发送的回调URL。

Client             Server
  |(request)         |
  |----------------->|     
  |<-----------------|     ||
  |        (response)|     ||
  |                  |    _||_ Time
  |        (callback)|    \  /
  |<-----------------|     \/
  |----------------->|
  |(response)        |
  |                  |

如何用JMeter进行压力测试?

java asynchronous jmeter webhooks api-design
2个回答
2
投票

它取决于WebHook实现,如果是轮询问题 - 你可以使用While Controller等待循环中的回调。可以使用Transaction Controller测量序列的整个持续时间

如果回调来自一个Server-Sent Event你可以使用,即JAX RS API提供SseEventSource类,可以用于等待JSR223 SamplerJava Request文章中描述的服务器端事件,如Stress/Load-Testing of Asynchronous HTTP/REST Services with JMeter文章中所述


2
投票

您必须侦听某些端口的传入连接。确保机器可以从外部连接。在JMeter中,您可以使用JSR223 Sampler并使用Groovy脚本

def server = new ServerSocket(8080)
while (true) {
    server.accept { socket ->
        socket.withStreams { input, output ->
            def reader = input.newReader()
            log.info('Received request:')
            while ((line = reader.readLine()) != null) {
                log.info(line)
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.