gRPC初体验 这个文章的例子其实和RESTful在通信模式上没有什么区别,也是一次请求然后一个响应的模式,如果真是这样那gRPC就没啥意思了,今天我们来看一下gRPC四种通信模式。
一、一元RPC模式
1、大白话
有一天你很想一个妹子了,然后就微信找她聊天
你:忙不忙?
妹子:忙
基本上是GameOver了,妹子对你印象很一般,但可以试着死缠烂打哦。
2、原理
一个请求消息对应一个响应消息,然后关闭连接,请求信息以EOS结尾,响应消息以trailer结尾。消息可以是一个或多个数据帧。
3、例子
proto定义
rpc getOrder(google.protobuf.StringValue) returns(Order);
OrderServiceImpl 实现
OrderServiceClient
二、服务器端流RPC模式
1、大白话
你:好没意思啊!
妹子:怎么了?
妹子:发生了什么事?
妹子:快点和我说,我急死了。。。
妹子:。。。。。。。
Game必须继续,妹子很喜欢你,你要相信凭你的长相和钱包有这样的妹子你不好好把握那是个大傻子。
2、原理
一个请求消息对应多个响应消息,响应消息用trailer做为结尾。
3、例子
proto
rpc searchOrders(google.protobuf.StringValue) returns(stream Order);
OrderServiceImpl 实现
onNext()发送消息,onCompleted()结束响应。
OrderServiceClient
三、客户端流RPC模式
1、大白话
你:你都不知道疼人的,
你:被一个人牵动着情绪很烦,也可以很甜蜜
你:宝,我去输液,输的什么液,想你的夜
妹子:滚
Game可以结束了,舔狗式的爱不是爱,放手吧,兄弟!
2、原理
3、例子
proto
rpc updateOrders(stream Order) returns(google.protobuf.StringValue);
OrderServiceImpl 实现
一直在接收消息,但就是不想回你,最后才烦了,回你一句滚,Game Over吧。
使用CountDownLatch阻塞线程等待回调
待学习,肚子很饿了。。。