You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatling gRPC编译报错:未找到ClientStream类型,请求排查问题

问题排查与修复方案

核心问题分析

  1. API类型不匹配:从生成的METHOD_START_PAIRING可以看到,你的gRPC方法类型是SERVER_STREAMING(服务器单向推送流:客户端发1个请求,服务器返回多个响应),但你误用了对应客户端流(CLIENT_STREAMING:客户端发多个请求,服务器返回1个响应)的clientStream方法和ClientStream类型。
  2. 类型未找到:大概率是缺少Gatling gRPC相关类的导入,或者用错了对应流类型的API。

修复步骤

1. 确保导入正确的Gatling类

在代码顶部添加必要的导入:

import io.gatling.grpc.Predef._
import io.gatling.core.Predef._

2. 替换为匹配服务器流的API

将ClientStream改为ServerStream,clientStream方法改为serverStream方法,对应服务器流类型:

class BasicSimu extends Simulation {

  val TokenKey : String = "token-string"
  val grpcConf = grpc(managedChannelBuilder("url:80").usePlaintext())
                .header(util.BearerToken, optional = true)($(TokenKey))
                .shareChannel

  // 修正流类型和方法
  val thisStream: ServerStream[StartPairingRequest, StartPairingResponse] = 
    grpc("Speak").serverStream(RelayServerGrpc.METHOD_START_PAIRING, "gettingThePairingKey")

  val speaker = scenario("BasicSimu")
      .exec(
        thisStream.connect
          // 必须添加请求体,示例:
          .send(StartPairingRequest(deviceId = "test-device-001"))
      )

  setUp( 
    speaker.inject(atOnceUsers(1))
  ).protocols(grpcConf)
}

3. 补充请求体(必填)

服务器流需要客户端先发送一个请求触发服务器推送,所以必须用.send()方法传入StartPairingRequest实例,否则服务器无法处理请求。

4. 确认依赖版本匹配

确保build.sbt中引入的Gatling gRPC插件版本与Gatling核心版本兼容,例如:

libraryDependencies += "io.gatling.grpc" % "gatling-grpc" % "1.1.2" % Test

(Gatling 3.9.x系列对应gatling-grpc 1.1.x版本)


内容的提问来源于stack exchange,提问作者TriNguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:15:06