A tour of gRPC:05 - gRPC server straming 服务端流

在上一篇中,我们实现了gRPC中的unary call,即客户端发一个请求,服务端回复一个响应。并尝试了 它在跨语言的情型下调用。在本篇中,我们将尝试实现 server straming 即客户端发送一个请求,服务 端回复多个响应,并同样尝试跨语言的调用。

go server straming call

1. 添加filter_message.proto 用于描述筛选条件。

​2. 修改laptop_service.proto 添加 一个搜索的 service。

​3. 运行 make clean 和 make gen 生成代码

4. 在laptop_store.go 在 LaptopStore 接口中添加 Search 函数,并添加相应实现。(因为深拷⻉多次使用,这里抽出一个函数)

​5. 在laptop_server.go 中添加 SearchLaptop 方法

​6. 将 client 包下的 main.go 中的 createLaptop 逻辑抽出来,并在main函数中利用 for 创建10个; 添加一个过滤条件

​7. make server运行服务器 make client 运行客户端,查看结果,运行正常

​可以观察到,在创建了10个Laptop,接收了筛选条件后,server 会检查逐条检查map中的数据,如果 符合,则返回一条,即结果分多次逐条返回。

Java server straming call

1. 将 gRpc go Straming 中编写的filter_message.proto和 laptop_service.protp 文件拷⻉ 至 Java 项目的 proto 文件夹中,并运行 mvn clean 和 mvn comple

2. 在LaptopStore 接口中新增 search 方法

3. 新增一个接口LaptopStream 其只有一个 send 方法

​4. 在InMemoryLaptopStore 中实现上面新增的 search 方法

​5. 在LaptopService 编写一个 searchLaptop 方法作作为服务端的实现。

​6. 接下来实现LaptopClient 中实现客户端逻辑,增加一个 SearchLaptop 方法。

​7. 修改 LaptopClient 中的main方法,先创建10个Laptop再进行过滤查询

​运行server 再运行 client

​可以观察到,server的结果是多次返回的,这也是 server straming 的特性。

跨语言的 server straming call 测试

我们先运行Java 的 server 再运行 golang 的client。

​再反过来,运行 golang 的 server 和 Java 的 client。

​运行的结果符合预期,并且符合 server straming 的特性。



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值