代码之家  ›  专栏  ›  技术社区  ›  Dominic Cabral

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

  •  2
  • Dominic Cabral  · 技术社区  · 7 年前

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

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

    如何使用JMeter对其进行压力测试?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Dmitri T    7 年前

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

    如果回拨为a Server-Sent Event 您可以使用,即。 JAX RS API 它提供 SseEventSource 类,该类可用于在 JSR223 Sampler 或在中 Java Request 如中所述的采样器 Stress/Load-Testing of Asynchronous HTTP/REST Services with JMeter 文章

        2
  •  2
  •   Evgeny Makarov    7 年前

    您必须监听某些端口的输入连接。确保您的机器可以从外部连接。在JMeter中,可以使用JSR223采样器和以下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)
                }
            }
        }
    }