Netty的深入浅出--21.gRPC双向流数据通信

90 篇文章 47 订阅
订阅专栏

继续上一章的内容,客户端请求是一个流对象,服务端响应一个集合

 客服端流式请求,服务端响应一个集合:

具体方法分析:

onNext():这里面和之前的方法有点不同,在之前onNext()是用来返回给客户端响应的数据,而在现在是客户端发送流式请求之后,onNext()方法是接收客户端发送过来的流式请求;每接收一个数据,它就会被调用一次。

onError():返回错误信息;

onCompleted():这个和之前不同,在之前两个信息传递的时候,该方法只是一个起到通知的作用,而在这里它是返回给客户端响应数据的方法。

 客户端相比服务端,其编写难度更大。

客户端接收服务端的响应:

 我们仔细看一下,我们想获取getStudentWrapper()方法对象,发现根本就没有。

因为客户端向服务端发送请求,在这里你会发现我们无法使用blockingStub的获取相关方法,因为我们客户端发送流式请求的时候,gRPC不支持使用同步方式获得对象,要求使用异步获取相应对象 

在gRPC中存在一个方法,使用异步的方式来发送流式请求

现在你在写的时候,发现异步的stub竟然三种方式都可以;

总结来讲就是,客户端不管是不是以流式的方式发送请求,都可以采用异步来获取对象;

但是如果是流式的方式发送请求,都只能用异步来获取对象。

 发送请求信息;

这里和之前又有点不同,之前请求信息发送完之后,就没有然后了。而异步不同, 你不行调用onCompleted()方法通知。

注释掉之前那个打印调用:

启动服务器(服务器使用的是上一章提到的):

 启动客户端(发现没有结果):

原因主要是因为异步的原因:

数据还没来的急发送出去,就已经执行了Oncompleted()方法;

我们让程序休眠一段时间

启动服务器

启动客户端

 

 

还有最后一种形式:两端都是以流式方法发送请求和响应

定义两个流式请求参数 

 

编译器生成代码 

拷贝代码:

 

 

gRPC服务代码:

 

服务端代码编写:

 

 客户端代码编写:

注释掉之前的代码

打印服务端发送过来的信息

 

客户端向服务端发送流式请求:

 

运行之后

 

 

到现在为止gRPC的四种方式以及基本上写完了,对于gRPC也基本上学完了,大家注意是要理解它的四种方法以及使用场景,然后跟thrift进行对比。 

.netcore grpc双向方法详解
qq_31975127的博客
08-14 1110
简单来讲客户端可以向服务端发送消息,服务端也可以向客户端传输响应,即客户端和服务端可以互相通讯客户端无需发送消息即可开始双向式处理调用。客户端可选择使用发送消息。使用或可访问从服务式处理的消息。没有更多消息时,双向式处理调用完成。客户端发送请求通过传入到服务端服务端响应到客户端的通过ResponseStream.WriteAsync写入到客户端服务端使用System.Threading.Channels保证线程安全交互。
Grpc通过onError向对端抛送异常
ironlzz的博客
11-25 1746
之前处理gRpc异常时直接使用onError(e)将捕获到的异常抛出,但是从来没有考虑过客户端能否接收到。 最近有个需求需要将服务端的异常抛到客户端,这样排查问题时就不用跨机器看日志了,从而使报错堆栈更像本地调用的堆栈= = 然后就发现原来的用法onError(Exception)是没有办法把异常抛到客户端的。通过查阅相关资料,找到以下解决方法。 1、首先需要将捕获到的异常序列化后封装到MetaData,代码如下: 2、服务端抛出异常时,不要直接使用onError(e),转而使用response
NettygRPC区别
最新发布
weixin_41344996的博客
08-29 440
Netty 是一个异步事件驱动的网络应用框架,用于开发高性能的网络服务器和客户端应用程序。gRPC 在分布式系统中使用广泛,适用于需要高性能、低延迟的 RPC 调用,如微服务、数据处理、跨语言系统集成等。: Netty 是通用的网络框架,可以支持 TCP、UDP、HTTP、WebSocket 等多种协议。虽然可以扩展为其他序列化机制,但 protobuf 是推荐的标准格式,提供了高效的编码和解码。虽然它的灵活性比 Netty 低一些,但提供了大量的标准特性来简化分布式系统的开发。
C# 搭建GRPC,实现双向通信
热门推荐
glmushroom的专栏
04-18 1万+
一、新建项目,定义GRPC服务接口 vs新建dll项目,项目中NuGet程序包添加Grpc相关引用 定义服务,创建.proto文件 创建文件CorrespondService.proto syntax = "proto3"; package My.Public; service CorrespondGrpcService { rpc SendMsg(GrpcData) returns (GrpcResult); rpc ReceiveDataFromServer(GrpcData) r
gRPC双向数据的交互控制(go语言实现)| gRPC双向数据的交互控制系列
Salted fish in hand, I have the world.
08-30 296
https://www.jianshu.com/p/5158d6686769
gRPC 的通信模式
qq_46457076的博客
02-14 728
关于 gRPC 的通信模式介绍!
GRPC单向/双向
weixin_30869099的博客
03-18 705
开始食用grpc(之二)https://www.cnblogs.com/funnyzpc/p/9570992.html 开始食用grpc(之一)https://www.cnblogs.com/funnyzpc/p/9501353.html https://grpc.iohttps://github.com/grpc/grpc-java/tree/master/examples/exa...
netty-codec-haproxy-4.1.73.Final-API文档-中英对照版.zip
05-03
赠送jar包:netty-codec-haproxy-4.1.73.Final.jar; 赠送原API文档:netty-codec-haproxy-4.1.73.Final-javadoc.jar; 赠送源代码:netty-codec-haproxy-4.1.73.Final-sources.jar; 赠送Maven依赖信息文件:netty-...
netty-resolver-dns-4.1.65.Final-API文档-中英对照版.zip
07-13
赠送jar包:netty-resolver-dns-4.1.65.Final.jar; 赠送原API文档:netty-resolver-dns-4.1.65.Final-javadoc.jar; 赠送源代码:netty-resolver-dns-4.1.65.Final-sources.jar; 赠送Maven依赖信息文件:netty-...
netty-buffer-4.1.68.Final-API文档-中文版.zip
06-04
赠送jar包:netty-buffer-4.1.68.Final.jar; 赠送原API文档:netty-buffer-4.1.68.Final-javadoc.jar; 赠送源代码:netty-buffer-4.1.68.Final-sources.jar; 赠送Maven依赖信息文件:netty-buffer-4.1.68.Final....
Nettynetty-netty-4.1.77.Final.tar.gz)
06-07
Nettynetty-netty-4.1.77.Final.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...
gRPC的通信方式-客户端式、服务端式、双向式在Java的调用示例代码.rar
09-24
gRPC的通信方式-客户端式、服务端式、双向式在Java的调用示例代码;gRPC的通信方式-客户端式、服务端式、双向式在Java的调用示例代码.;gRPC的通信方式-客户端式、服务端式、双向式在Java的调用示例代码
Go-使用grpcgo和python的双向式RPC的快速演示
08-14
使用grpc,go和python的双向式RPC的快速演示
netty-codec-mqtt-4.1.74.Final-API文档-中文版.zip
07-06
赠送jar包:netty-codec-mqtt-4.1.74.Final.jar; 赠送原API文档:netty-codec-mqtt-4.1.74.Final-javadoc.jar; 赠送源代码:netty-codec-mqtt-4.1.74.Final-sources.jar; 赠送Maven依赖信息文件:netty-codec-...
Netty深入浅出--20.gRPC服务器式调用实现
moxiaolin的博客
05-30 915
之前我们上一章实现了gRPC的数据传递的第一种形式; 第一种形式:客户端向服务端发送请求,服务端返回给客户端响应 第二种形式:客户端向服务端发送式请求(stream),服务端向客户端返回响应 第三种形式:客户端向服务端发送请求,服务端向客户端返回式响应(stream) 第四种形式:客户端向服务端发送式请求(stream),服务端向客户端返回式响应(stream) 在gRPC...
GRPC
qq_30505673的博客
12-12 816
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。 gRPC基于 HTTP/2标准设计,带来诸如双向控、头部压缩、单 TCP连接上的多复用请求等特。这些特性使得 其在移动设备上表现更好,更省电和节省空间占用。 RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需...
聊一聊 gRPC 的四种通信模式
江南一点雨的专栏
02-09 1706
温馨提示:本文需要结合一起食用,否则可能看不懂。前面一篇文章松哥和大家聊了 gRPC 的基本用法,今天我们再来稍微深入一点点,来看下 gRPC 中四种不同的通信模式。接下来松哥就通过四个完整的案例,来分别和向伙伴们演示这四种不同的通信模式。
15. 【gRPC系列学习】gRPC四种通信模式:一元RPC、客户端RPC、服务端RPC、双向RPC
菜鸟的博客
12-22 1128
gRPC四种通信模式
gRPC开发: gRPC的四种通信模式
weixin_45685541的博客
02-26 2857
引言 gRPC应用程序共有四种基础的通信模式,分别为:一元RPC,服务端RPC,客户端RPC以及双向RPC 注:阅读本文,如果没有gRPC基础的同学可以看我之前关于如何简单构建gRPC客户端和服务端的文章: gRPC开发:go语言构建简单的服务端和客户端 一元RPC模式 服务定义: //ecommerce/order_management.pb.go syntax="proto3"; //导入这个包,使用常用的数据类型,如StringValue import "google/protobu
无法解析 io.netty:netty-codec:4.1.42.Final
07-19
"io.netty:netty-codec:4.1.42.Final"是一个Netty库中的模块版本引用,它包含了网络编码相关的功能。这个错误通常出现在尝试构建项目时,当你使用的Maven或Gradle依赖管理工具无法找到指定版本的Netty库文件。 可能...
写文章

热门文章

  • Failed to load resource: the server responded with a status of 404 (Not Found) 254125
  • Failed to load resource: the server responded with a status of 404 (Not Found) 62493
  • 沙盘erp模拟人机对抗如何将公司经营6年 56368
  • maven报错Non-resolvable parent POM---pom找不到parent 41163
  • IDEA的详细使用(上) 29216

分类专栏

  • Netty网络编程 90篇
  • 架构设计 2篇
  • 测试 1篇
  • 基础巩固 5篇
  • 博主声明
  • 架构师进阶 9篇
  • 计算机基础 3篇
  • 算法练习 41篇
  • c语言基础 3篇
  • 算法 15篇
  • 网络编程 14篇
  • 高并发编程 20篇
  • 开发问题 25篇
  • 虚拟机深入理解 11篇
  • Java设计模式 33篇
  • Spring框架深入分析 20篇
  • SpringBoot深入浅出 28篇
  • 项目实战 30篇
  • 开发工具 32篇
  • 计算机系统 12篇
  • docker 5篇
  • 面试问题 18篇
  • 缓存 3篇

最新评论

  • Netty的深入浅出--13.Apache Thrift的简单项目实战

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)提升标题与正文的相关性。

  • 二、Jooq整合SpringBoot

    CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • 二、Jooq整合SpringBoot

    CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • java并发编程--实现可见性的四种可行方案

    317-006: 第一个例子根本就不是内存可见性的问题,是由于jit即时编译器将代码优化了,你再运行时加上jvm参数-Xint,只执行解释器,就不会一直执行下去。

  • 基于TCP/IP的网络编程(C++语言编程)

    都是报错快CV吧: 好像第二条server和client说反了,能感觉到一起就好,就是说只能发一条收一条,不能一直发

大家在看

  • 数据结构图的应用最小生成树-克鲁卡斯尔算法(有向网+无向网+C语言代码+邻接矩阵存储结构)-最底下附带图片+终端输入内容
  • 计算机毕业设计项目推荐:基于Web的社区人员管理系统的设计36303(开题答辩+程序定制+全套文案 )上万套实战教程手把手教学JAVA、PHP,node.js,C++、python、大屏数据可视化 908
  • 计算机毕业设计项目推荐,个人知识管理系统 79004(开题答辩+程序定制+全套文案 )上万套实战教程手把手教学JAVA、PHP,node.js,C++、python、大屏数据可视化 540
  • 基于Thinkphp/Laravel的招聘求职管理系统的设计与实现 fqec0
  • Linux:在xshell中演示在没有图形化界面的情况下如何使用gdb工具对代码进行调试

最新文章

  • 内存泄露排查流程
  • 内存泄露排查流程
  • 二、Jooq整合SpringBoot
2024年4篇
2022年5篇
2021年15篇
2020年13篇
2019年366篇
2018年27篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢小品雕塑多少钱北京大型商场美陈市场价安阳商场美陈特装玻璃钢雕塑简介四川人物玻璃钢雕塑设计天津玻璃钢雕塑图片四川室内商场美陈价钱北票玻璃钢雕塑厂家温州玻璃钢花盆供应深圳超市商场美陈哪家好玻璃钢孔子雕塑哪家实惠南京镜面玻璃钢雕塑厂家供应玻璃钢小品雕塑定做青海抽象玻璃钢雕塑南平玻璃钢雕塑价格安徽玻璃钢校园雕塑景区玻璃钢雕塑批发石家庄火烈鸟玻璃钢雕塑价格百色玻璃钢雕塑定制嵩县玻璃钢雕塑定制河南玻璃钢人物造型雕塑吉林玻璃钢骆驼雕塑仿真植物玻璃钢雕塑济南玻璃钢雕塑定做吉林雕塑玻璃钢卡通沁阳玻璃钢动漫雕塑长春动物玻璃钢雕塑生产厂家户外玻璃钢雕塑仿真白鹿摆件山东玻璃钢雕塑设计商园林玻璃钢卡通雕塑推荐厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化