世界快看点丨使用 @GrpcClient 实现客户端
转载请注明出处:
(资料图)
@GrpcClient 注解的作用是将 gRPC 客户端注入到 Spring 容器中,方便在应用程序中使用 gRPC 客户端调用 gRPC 服务提供的函数。使用 @GrpcClient 注解,我们可以像使用其他 Spring Bean 一样来使用 gRPC 客户端,无需手动创建连接通道和 stub 类对象,Spring Boot 会自动为我们进行管理和维护。
使用 @GrpcClient 注解的场景通常是在 Spring Boot 中使用 gRPC 客户端时,因为 Spring Boot 已经为我们提供了自动配置功能,可以简化 gRPC 客户端的配置和使用。在这种场景下,我们只需要在应用程序中添加 @GrpcClient 注解,然后在配置文件中添加 gRPC 客户端的配置信息,就可以方便地使用 gRPC 客户端了。
另外,@GrpcClient 注解还可以指定 gRPC 服务的名称,以区分不同的 gRPC 服务。这对于在同一个应用程序中使用多个 gRPC 服务时非常有用,可以避免不同的 gRPC 服务之间发生冲突。例如:
@GrpcClient("greeter")private GreeterGrpc.GreeterBlockingStub greeterStub;@GrpcClient("calculator")private CalculatorGrpc.CalculatorBlockingStub calculatorStub;
在上述示例中,我们分别为 greeter 和 calculator 两个 gRPC 服务创建了不同的 stub 类对象,并使用了不同的 @GrpcClient 注解来区分它们。
以下是一个完整的使用@GrpcClient注解的使用代码:
1.配置maven相关依赖gRPC客户端使用一下命令添加 Maven 依赖项:
net.devh grpc-client-spring-boot-starter 2.12.0.RELEASE io.grpc grpc-netty-shaded 1.37.0 io.grpc grpc-protobuf 1.37.0 io.grpc grpc-stub 1.37.0
并添加一下插件:
2.添加proto文件:org.xolstice.maven.plugins protobuf-maven-plugin 0.6.1 compile com.google.protobuf:protoc:3.12.0:exe:${os.detected.classifier} grpc-java io.grpc:protoc-gen-grpc-java:1.30.2:exe:${os.detected.classifier} ${project.build.directory}/generated-sources/protobuf/java false true
syntax = "proto3";package com.example.grpcdemo.service;option java_multiple_files = true;option java_package = "com.example.grpcdemo.service";option java_outer_classname = "UserServiceProto";message UserRequest { string name = 1; int32 age = 2;}message UserResponse { string message = 1;}service UserService { rpc addUser (UserRequest) returns (UserResponse); rpc deleteUser (UserRequest) returns (UserResponse); rpc updateUser (UserRequest) returns (UserResponse); rpc getUser (UserRequest) returns (UserResponse);}
执行mvn clean install
命令即可将proto文件编译成Java类并生成到target/generated-sources/protobuf/java
目录下。 编译后的Java类包括服务类、消息类和客户端类。以本例中的proto文件为例,编译后的Java类如下:
UserServiceGrpc.java
消息类:UserRequest.java
和UserResponse.java
客户端类:UserServiceGrpc.UserServiceBlockingStub.java
接下来,我们可以使用@GrpcClient
注解将UserServiceGrpc.UserServiceBlockingStub
类型的gRPC客户端注入到Spring Bean中。3.使用@GrpcClient实现服务端 示例代码如下:
@Componentpublic class UserGrpcClient { @GrpcClient("user-service-provider") // 指定gRPC服务在配置中的服务名 private UserServiceGrpc.UserServiceBlockingStub userService; public void addUser(UserRequest request) { UserResponse response = userService.addUser(request); // 处理响应结果 }}
在这个例子中,我们使用@GrpcClient
注解将UserServiceGrpc.UserServiceBlockingStub
类型的gRPC客户端注入到了Spring Bean中,并在addUser()
方法中使用该gRPC客户端访问远程gRPC服务。需要注意的是,在使用@GrpcClient
注解时,需要指定gRPC服务的服务名。
配置文件中配置grpcClient相关的配置
grpc: client: user-service-provider: address: localhost # gRPC服务地址 port: 6565 plaintext: true # 指定是否使用明文连接; enableKeepAlive: true # 是否启用KeepAlive机制 keepAliveTime: 30s # KeepAlive时间 keepAliveTimeout: 5s # 是否在没有gRPC调用时保持KeepAlive的连接5.客户端调用
在应用程序中,使用UserGrpcClient
类访问gRPC服务,示例代码如下:
import com.example.grpcdemo.service.UserRequest;import com.example.grpcdemo.service.UserResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController { @Autowired private UserGrpcClient userGrpcClient; @RequestMapping("/addUser") public String addUser(UserRequest request) { UserResponse response = userGrpcClient.addUser(request); return response.getMessage(); }}
在这个例子中,我们在UserController
中注入了UserGrpcClient
,并在addUser()
方法中使用该客户端访问远程gRPC服务,处理响应结果并返回给前端。
标签:
-
2022-05-23 16:13:32
上海奉贤等区开展常态化防疫压力测试 有序开放公交、公园、公共服务场所、公共街区商区<
本报上海5月21日电 (记者刘士安、曹玲娟)上海正在奉贤等区开展常态化防疫压力测试。在21日召开的上海市疫情防控工作新闻发布会上,奉
-
2022-05-23 16:13:32
“抗疫 宅家云课堂”,吸引沪上老同志观看50万人次<
由上海市委老干部局主办,上海市老干部大学、市科技助老服务中心承办的“抗疫 宅家云课堂”系列直播讲座自4月12日启动以来,深受老同
-
2022-05-23 16:13:32
“代跑腿”买药、开通绿色通道 丰台为管控区居民提供便捷医疗服务<
“真是太感谢了,解决了我的燃眉之急!”家住假日万恒社区的杨女士对前来送药的居委会工作人员说。 自5月17日6时起,丰台区对青塔街...
-
2022-05-23 16:13:32
上海嘉定:儿童计划免疫接种全部恢复,实行预约制<
在5月22日召开的上海市新冠肺炎疫情防控新闻发布会上,嘉定区副区长王浩介绍,从4月28日开始,嘉定在防范区逐步有序恢复老年人疫苗接种
-
2022-05-23 16:13:32
乡村振兴看新疆 | 种下红樱桃 结出“致富果”<
央广网阿图什5月22日消息(记者 罗成 通讯员 杨林)乡村振兴靠产业,产业发展靠特色。新疆阿图什市阿扎克镇麦依村积极引导农民因地制
-
2023-05-22 04:56:13
世界快看点丨使用 @GrpcClient 实现客户端
转载请注明出处:@GrpcClient注解的作用是将gRPC客户端注入到Spring容器中,方便在应用程序中使用gRPC客户
-
2023-05-22 01:08:04
古灵星历险记:霸主(02全新的世界)|播资讯
古灵星毁灭的三年后。星星球北方的一处海域,一艘现代化的渔船航行在翻滚着波浪的海面上,浪头很是凶险,随
-
2023-05-21 22:19:14
清华大学金融科技研究院副院长魏晨阳答每经记者问:面对ChatGPT等人工智能的关键是要提出更有效的问题
5月21日,在2023清华五道口全球金融论坛上,清华大学金融科技研究院副院长、清华五道口全球不动产金融论坛
-
2023-05-21 21:06:54
福昕软件:拟7.2亿元收购新意科技40%股权|世界观热点
5月21日电,福昕软件公告,为实现构建智能文档平台战略,拓展垂直行业尤其是金融证券业的市场布局,公司或
-
2023-05-21 20:16:00
醉汉盗贼买下奴隶少女——第47话
「哇哦,真的是圣骑士啊。」兴奋的塔克不停地跳跃着。「哈里斯,你家变得越来越热闹了,我真的没有走错房子
-
2023-05-21 18:52:53
告别3.5元?饮料巨头被曝又涨价!
前瞻产业研究院发布的《2022年中国碳酸饮料行业现状分析》中提到,2021年,可口可乐和百事可乐两家企业占据
-
2023-05-21 17:57:42
世界热资讯!甲泼尼龙片都治什么病_甲泼尼龙片是治什么的
甲泼尼龙片的作用很多,常见的有以下几个方面:1 治疗风湿性疾病:作为短期辅助用药,帮助患者度过急性期或
-
2023-05-21 16:53:17
每日讯息!百善孝为先_百善
1、全句是:百善孝为先万恶淫为源常存仁孝心,则天下凡不可为者,皆不忍为。2、所以孝居百行之先;一起邪淫念
-
2023-05-21 15:51:14
墨西哥西北部发生枪击事件致10死9伤 当前视点
墨西哥西北部发生枪击事件致10死9伤---新华社墨西哥城5月20日电(记者朱雨博吴昊)墨西哥西北部的下加利福
-
2023-05-21 14:45:34
48%液体氢氧化钾商品报价动态(2023-05-21) 世界观天下
交易商品牌 产地交货地最新报价氢氧化钾 48%液体东营市鑫浩化工有限公司国产山东省4850元 吨济南卓越化工
-
2023-05-21 14:03:13
天天最新:生日快乐藏头诗大全集押韵_生日快乐藏头诗大全
1、祝福之意诗中含,王家碧玉美如仙。2、贺恭此事三花艳,娟雅丽质舞翩翩。3、生辰华诞在今欢,日祥高照挂
-
2023-05-21 12:39:22
从一场马拉松,窥见长城汽车品牌成功秘密
2023年5月14日,作为世界首个跑进工厂的马拉松,2023长城汽车智慧工厂马拉松大赛燃情开跑,来自社会各界的5
-
2023-05-21 11:14:13
当前播报:5月21日崂山发布黄色大雾预警 请多加防范
今天是5月21日,星期日,农历四月初三。青岛天气:多云,温度18~25℃,西北风2级。未来三天最高温度26℃,
-
2023-05-21 10:33:04
小小物候推荐官之小满节气:谷满粒足,一生小满
榴花似火,枇杷满树。到了小满,大自然中许多的植物果实日趋饱满,小满节气带着浓浓的喜气,款款而至。湖南
-
2023-05-21 09:30:11
环球速递!第五届中国国际茶叶博览会在杭州开幕 湖北七大公用品牌300余款香茗登场
第五届中国国际茶叶博览会在杭州开幕湖北七大公用品牌300余款香茗登场---湖北日报讯(记者崔逾瑜、通讯员陈
-
2023-05-21 08:56:37
“山西原来这么好”_世界热点评
“山西原来这么好”,主流媒体,山西门户。山西新闻网是经国务院新闻办审核批准,由山西日报报业集团主管、主
-
2023-05-21 07:26:49
LPL官推发文:LPL是最棒赛区,G2整活:BIN来敲JDG门了 全球新要闻
BLG在春季赛,并不被看好,却闯入了春季赛决赛;同样,这次MSI开赛,在GEN,T1和JDG面前,BLG大多数人认为是
-
2023-05-21 05:52:59
世界今日讯!撒贝宁现身黄石领跑马拉松,全程热情太接地气,大叔冲进场求合影
5月20日,央视主持人撒贝宁现身湖北黄石大治,参加当地公园举办的马拉松比赛,引起了不少群众围观,大家也
-
2023-05-21 04:00:54
【天天时快讯】14款迈锐宝视频试驾视频_14款迈锐宝的功能有哪些?
14款迈锐宝的功能有配有遥控钥匙以及全车的电动车窗,以迈锐宝2014款1 6T自动舒适版为例:这款车的生产厂商
-
2023-05-21 00:57:56
哥布林洞窟动漫bl_哥布林的洞窟动漫资源 世界报资讯
1、这部动漫短片的剧情脉络还算是简单,起初就是勇士们一起进入哥布林的洞窟为民除害,即使是身穿了华丽的
-
2023-05-20 22:05:48
“最美候鸟”栗喉蜂虎厦门筑巢
栗喉蜂虎是国家二级保护动物,被爱鸟观鸟者称为“最美候鸟”。眼下,正值栗喉蜂虎繁殖期。据厦门市自然资源
-
2023-05-20 21:07:08
燃油车最后的疯狂,大众Polo GTI推25周年版,海外售价公开_最新资讯
大众为了庆祝Polo(参数|询价)车系中的高性能车型PoloGTI,于2023年推出满25周年,特别推出
-
2023-05-20 20:04:06
当前看点!2023—2024年黄河流域“清废行动”启动
光明日报北京5月19日电(记者张蕾)为贯彻落实黄河流域生态保护和高质量发展国家重大战略,严厉打击黄河流
-
2023-05-20 19:00:41
lan是什么意思网络语_lan是什么意思-天天观焦点
1、路由器上的WAN口是用来连接外网(公网),或者说是连接宽带运营商的设备的。2、例如电话线上网时WAN口用
-
2023-05-20 17:51:45
利润转折来临!互联网龙头一季报密集出炉,机构:看好港股配置价值
利润转折来临!互联网龙头一季报密集出炉,机构:看好港股配置价值
-
2023-05-20 17:01:25
河南三门峡发布冰雹橙色预警 环球讯息
【河南三门峡发布冰雹橙色预警】据央视,河南省三门峡市气象台5月20日15时45分发布冰雹橙色预警:预计6小时
-
2023-05-20 16:05:01
今年前4月中欧班列累计开行5611列
新华社北京5月20日电(记者樊曦)记者20日从中国国家铁路集团有限公司获悉,今年1至4月份,中欧班列累计开
-
2023-05-20 14:52:02
999感冒颗粒孕妇可以喝吗_感冒颗粒孕妇能吃吗-天天速读
1、病情分析:感冒是一种自限性疾病,一周左右可以自行好转。2、如果孕妇感冒症状不严重,没有明显的咽痛、
-
2023-05-20 13:56:57
环球最新:盐酸小檗碱片作用时间_盐酸小檗碱片作用
1、病情分析:盐酸小檗碱片是盐酸小檗碱,主要成分是小檗碱。2、对志贺氏菌和大肠杆菌引起的肠道感染有抗感
-
2023-05-20 12:34:02
世界视点!1至4月份中欧班列累计开行5611列 发送货物60.9万标箱
记者从中国国家铁路集团有限公司(以下简称国铁集团)获悉,今年1至4月份,中欧班列累计开行5611列,运送货
-
河钢股份董秘回复:公司一直严格按照证监会及交易所的相关规定履行信息披露义务
2022-12-30 09:12:58 -
借呗逾期28天影响征信吗
2022-12-30 00:38:36 -
河南少林寺门票日常免票政策|前沿热点
2022-12-29 19:05:32 -
张新成:以青春之我、奋斗之我书写光影华章-通讯
2022-12-29 17:33:48 -
今日看点:嘉祥新冠疫苗第四针在哪打?地址及电话一览表
2022-12-29 15:33:17 -
ETH-USDT:区间震荡,等待流动性回归-热点聚焦
2022-12-29 13:10:39 -
全球即时看!招商宏观:美国经济的韧性及对中国放开后的启示
2022-12-29 11:10:39