Kotlin/JVM除gRPC外的RPC客户端库推荐?适配AirSim开发需求
针对你对接微软AirSim模拟器的需求,这里推荐几个适配Kotlin/JVM的RPC方案,尤其是和AirSim官方用的msgpack-rpc兼容的选项:
MsgPack-RPC 官方JVM实现:这是最贴合你需求的选择,和AirSim Python API用的msgpack-rpc协议完全兼容。你可以引入
org.msgpack:msgpack-rpc依赖,直接在Kotlin中编写同步或异步的RPC调用,无需额外适配就能和AirSim的服务通信。Ktor Client + MsgPack序列化:Ktor是JetBrains出品的轻量级框架,它的客户端支持通过插件启用MsgPack序列化。你可以基于Ktor封装自定义的RPC调用逻辑,灵活性很高,适合根据AirSim的接口结构定制API。需要的依赖包括
io.ktor:ktor-client-core和io.ktor:ktor-serialization-msgpack。Apache Thrift:老牌跨语言RPC框架,Kotlin/JVM有完善的客户端支持,能自动生成Kotlin代码。虽然默认序列化不是MsgPack,但它支持多种格式,且跨语言兼容性强,适合需要和其他语言服务交互的场景。
Dubbo(带MsgPack扩展):阿里的高性能RPC框架,现在支持Kotlin/JVM。通过扩展插件可以启用MsgPack序列化,同时提供服务治理、负载均衡等进阶功能,如果你的项目需要更复杂的RPC能力,这个选项很合适。
对接AirSim的建议
优先选择MsgPack-RPC官方JVM库,因为协议完全匹配AirSim的服务端,你可以参考Python版API的调用结构,用Kotlin封装对应的方法,比如通过client.call("getImage", cameraId)这类调用直接和AirSim交互。
内容的提问来源于stack exchange,提问作者Dimitris Chasanidis

