写点什么

A tour of gRPC:07 - gRPC bidirectional straming 双向流

作者:BUG侦探
  • 2022 年 8 月 11 日
    北京
  • 本文字数:795 字

    阅读完需:约 3 分钟

A tour of gRPC:07 - gRPC bidirectional straming 双向流

go bidirectional-streaming call

1. 修改 laptop_service.proto 添加 ReteLaptop 相关内容,运行 make clean 、make gen 进行 代码生成

​2. rating_store.go 中编写和评分相关的内容

​3. 在 laptop_server.go 中实现 添加 RatingStore 并修初始化函数(修改之前单元测试中为 ratingStore 添加 nil 值)实现服务端 RateLaptop 内容

​4. 在 sample 包 generator 中增加一个生成 rating 的功能

​5. 在 client/main.go 中实现 rateLaptop

​6. 编写一个单元测试

​运行一下单元测试

​运行一下 server 和 client 进行测试

​可以看到,client 发送完 3 条 create laptop 后,server 返回了评分的提示,此时 client 再次发送 y 后, server 接收到后会进行评分,并进行返回。也就是说,client 和 server 在一次连接中都发送了多次消息。

Java bidirectional-streaming call

1. 拷⻉ gRPC go bidirectional-straming 中的 laptop_service.proto 运行 mvn clean compile 生成最新的代码

2. 新建一个 Rating 实体类

​3. 新建一个 RatingStore 接口

​4. 新建一个 InMemoryRatingStore 实现 RatingStore

​5.编写一个单元测试进行测试

​单元测试通过,结果符合预期

6. 在 LaptopService 中实现 RatingStore 相关内容,并修改 LaptopServer 中使用 LaptopService 方法的地方。

​7. 接下来实现客户端,在 Generator 中添加一个新随机生成分数的方法

​8. 在客户端编写一个调用 rating 的方法

​9. 运行 server 和 client 进行测试

​同上,可以看到,client 发送完 3 条 create laptop 后,server 返回了评分的提示,此时 client 再次发送 y 后,server 接收到后会进行评分,并进行返回。也就是说,client 和 server 在一次连接中都发送了多次 消息。

跨语言的 bindirectional-streaming 测试

最后,来到了我们的熟悉的跨语言测试环节

我们先使用 Java Server 和 go client 进行测试

​测试结果符合预期。

我们再反顾来使用 go Server 和 Java client 进行测试

​效果符合预期






发布于: 刚刚阅读数: 4
用户头像

BUG侦探

关注

还未添加个人签名 2021.06.08 加入

专注于发掘程序员/工程师的有趣灵魂,对工作中的思路与总结进行闪光播报。

评论

发布
暂无评论
A tour of gRPC:07 - gRPC bidirectional straming 双向流_gRPC_BUG侦探_InfoQ写作社区