Gatling gRPC编译报错:未找到ClientStream类型,请求排查问题
问题排查与修复方案
核心问题分析
- API类型不匹配:从生成的
METHOD_START_PAIRING可以看到,你的gRPC方法类型是SERVER_STREAMING(服务器单向推送流:客户端发1个请求,服务器返回多个响应),但你误用了对应客户端流(CLIENT_STREAMING:客户端发多个请求,服务器返回1个响应)的clientStream方法和ClientStream类型。 - 类型未找到:大概率是缺少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
相关产品推荐
相关产品推荐

