Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >gRPC rocks build your first gRPC service(part 2)

gRPC rocks build your first gRPC service(part 2)

作者头像
jimmyhzhao
发布于 2022-04-10 04:04:07
发布于 2022-04-10 04:04:07
25400
代码可运行
举报
文章被收录于专栏:SkemaloopSkemaloop
运行总次数:0
代码可运行

In the previous aritile, we have created the schema. In this article, I will introduce how to generate the stub and server code.

Publish Schema

After click the create schema, the protobuf has been pushed to the sandbox repo of my github.

github repo

The path follows the rules we have defined in the previous article. After the schema is published to the GitHub repo, the next step is to generate the stub and server code according to the schema.

Publish Stub

Click the Next Step button to generate the stub code.

generate stub

By default, skemakit supports java snd golang. You can review the code generated. The stub code can be used by both he client and server to serialize and deserialize the messages between server and clients.

golang and java stub

Generate Server Code

Next we can generate the server code boilerplate, which is a java or golang project that you will add your business logic into.

Then you can check your prototol list to download your server boilerplate code.

download server code

Let`s take java as an example.

Download the java server code and unzip to a folder. The code structure is like below.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
~/Downloads/ cd sample_package_grpc-java_draft 
 ~/Downloads/sample_package_grpc-java_draft/ ls
pom.xml               sample_package       sample_package-client
 ~/Downloads/sample_package_grpc-java_draft/ tree
.
├── pom.xml
├── sample_package
│   ├── pom.xml
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   └── com
│   │   │   │       └── example
│   │   │   │           └── server
│   │   │   │               ├── SayHelloService.java
│   │   │   │               ├── SayHiService.java
│   │   │   │               └── ServiceApplication.java
│   │   │   └── resources
│   │   │       └── application.yaml
│   │   └── test
│   │       └── java
│   │           └── README.md
│   └── target
│       └── README.md
└── sample_package-client
  ├── pom.xml
  ├── src
  │   ├── main
  │   │   ├── java
  │   │   │   └── com
  │   │   │       └── example
  │   │   │           └── client
  │   │   │               ├── ClientApplication.java
  │   │   │               ├── controller
  │   │   │               │   └── ClientController.java
  │   │   │               └── service
  │   │   │                   ├── ClientService.java
  │   │   │                   └── impl
  │   │   │                       └── ClientServiceImpl.java
  │   │   └── resources
  │   │       └── application.yaml
  │   └── test
  │       └── java
  │           └── README.md
  └── target
      └── README.md
​
25 directories, 16 files
​
​

Let`s edit the SayHiService.java to respond a request. The service will echo the message I send through the request.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.example.server;import com.skemaloop.test.SayHiGrpc;
import com.skemaloop.test.SayHiOuterClass;
import io.grpc.stub.StreamObserver;
import net.devh.boot.grpc.server.service.GrpcService;
​
@GrpcService
public class SayHiService extends SayHiGrpc.SayHiImplBase {
   @Override
   // SayHello
   public void sayHello(SayHiOuterClass.HelloRequest request,
   StreamObserver<SayHiOuterClass.HelloReply> responseObserver) {
       // PbServiceOuterClass.HelloReply reply = PbServiceOuterClass.HelloReply.newBuilder().setMsg("Msg: Hello," + request.getMsg() + "\n").build();
       SayHiOuterClass.HelloReply reply =SayHiOuterClass.HelloReply.newBuilder().build();
       // add a business logic here
       responseObserver.onNext(reply);
       responseObserver.onCompleted();
  }}

Build your project by maven.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn package

Start your service.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar sample_package-0.0.1-SNAPSHOT.jar 
​
.   ____         _           __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::               (v2.4.0)2022-04-02 12:48:24.162 INFO 80519 --- [           main] com.example.server.ServiceApplication   : Starting ServiceApplication using Java 11.0.12 on JIMMYHZHAO-MB3 with PID 80519 (/Users/huizhao/Downloads/sample_package_grpc-java_v1.0.1/sample_package/target/sample_package-0.0.1-SNAPSHOT.jar started by huizhao in /Users/huizhao/Downloads/sample_package_grpc-java_v1.0.1/sample_package/target)
2022-04-02 12:48:24.164 INFO 80519 --- [           main] com.example.server.ServiceApplication   : No active profile set, falling back to default profiles: default
2022-04-02 12:48:24.702 INFO 80519 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-04-02 12:48:24.708 INFO 80519 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-04-02 12:48:24.708 INFO 80519 --- [           main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
2022-04-02 12:48:24.739 INFO 80519 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-04-02 12:48:24.739 INFO 80519 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 538 ms
2022-04-02 12:48:24.831 INFO 80519 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2022-04-02 12:48:24.940 INFO 80519 --- [           main] g.s.a.GrpcServerFactoryAutoConfiguration : Detected grpc-netty-shaded: Creating ShadedNettyGrpcServerFactory
2022-04-02 12:48:25.018 INFO 80519 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-04-02 12:48:25.075 INFO 80519 --- [           main] n.d.b.g.s.s.AbstractGrpcServerFactory   : Registered gRPC service: sample_module.sample_package.SayHi, bean: sayHiService, class: com.example.server.SayHiService
2022-04-02 12:48:25.076 INFO 80519 --- [           main] n.d.b.g.s.s.AbstractGrpcServerFactory   : Registered gRPC service: grpc.health.v1.Health, bean: grpcHealthService, class: io.grpc.protobuf.services.HealthServiceImpl
2022-04-02 12:48:25.076 INFO 80519 --- [           main] n.d.b.g.s.s.AbstractGrpcServerFactory   : Registered gRPC service: grpc.reflection.v1alpha.ServerReflection, bean: protoReflectionService, class: io.grpc.protobuf.services.ProtoReflectionService
2022-04-02 12:48:25.159 INFO 80519 --- [           main] n.d.b.g.s.s.GrpcServerLifecycle         : gRPC Server started, listening on address: *, port: 9999
2022-04-02 12:48:25.166 INFO 80519 --- [           main] com.example.server.ServiceApplication   : Started ServiceApplication in 1.963 seconds (JVM running for 2.272)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
T-BOX硬件方案:STM32与SD NAND(贴片式TF卡)存储的创新应用
在智能网联汽车快速发展的当下,车载T-BOX(Telematics Box)作为车辆与云端互联的核心枢纽,其性能和可靠性直接决定了用户体验的上限。米客方德(MK)推出的基于STM32H7RX主控芯片与MKDV4GIL-AST(SD NAND贴片式TF卡)大容量存储的高性能T-BOX方案,不仅提升了系统的响应速度与数据可靠性,还为车企提供了高性价比的解决方案。
用户11143476
2025/04/25
1460
T-BOX硬件方案:STM32与SD NAND(贴片式TF卡)存储的创新应用
吉利汽车如何构建基于 EMQX 和 AutoMQ 的混合云车联网架构
吉利汽车集团在中国上海、宁波、以及海外等地建有造型设计和工程研发中心,研发实力雄厚。在中国、马来西亚建有世界一流的现代化整车和动力总成制造工厂,拥有各类销售网点超过 1400 多家,产品销售及服务网络遍布世界各地。
深度学习与Python
2025/04/09
980
吉利汽车如何构建基于 EMQX 和 AutoMQ 的混合云车联网架构
万物互联时代,车联网该如何演绎速度与激情?
血脉喷张的激情,满屏飞溅的汽车碎片,肾上素飙升的汽车特技,肌肉型男、性感美女、高速飙车…这无疑已经成为了《速度与激情》系列的标配,也迎来了无数影迷拥趸。
SDNLAB
2019/08/15
6930
万物互联时代,车联网该如何演绎速度与激情?
我所知道的车联网30年史,5G智能座舱开启汽车新时代
车联网(IoV:Internet of Vehicle)顾名思义就是让车联上网。这是物联网(IoT: Internet of Things)在汽车领域的一个细分应用。车辆和外界建立联系,并创造出丰富多彩的功能。
科技旋涡
2022/03/30
1K0
我所知道的车联网30年史,5G智能座舱开启汽车新时代
鹅厂车联网探索:5G下边缘云计算的车路协同实践
自动驾驶在国际是非常热的话题,业界的标准分成了不同的等级,有的分成了5级、有的分成了6级。
腾讯云开发者
2020/07/01
3.4K0
鹅厂车联网探索:5G下边缘云计算的车路协同实践
​一文读懂蜂窝车联网C-V2X
简单来说,就是赋予车辆通信能力,通过V2V(车对车)、V2P(车对行人)、V2I(车对基础设施)、V2N(车对网络),让驾乘体验更加舒适,交通环境更加安全,使能未来的自动驾驶。
鲜枣课堂
2020/12/02
8920
​如何实现车联网的灵活数据采集
随着车联网与 5G 技术的融合以及车辆智能化的发展,车联网的数据采集需求呈现爆发式增长。传统的车辆数据采集主要用于车辆的远程监测和故障诊断。随着车辆应用的丰富和智能化水平的提高,车辆数据采集逐渐应用到更多的场景,如研发用数据采集、数据统计和分析、规则引擎与报警系统、车辆实时控制等。
EMQ映云科技
2022/11/14
9160
专访吴石/李滨/翟尤:5G新时代,如何做好安全建设?
在中央多次提及下,“新基建”一跃成为当下最热的社会关注点。紧跟着中央指导意见而来的,是单个方向加速的细则落地。
腾讯安全
2020/04/03
9100
专访吴石/李滨/翟尤:5G新时代,如何做好安全建设?
车联网安全技术现状、突破及趋势
据公安部2024年1月11日统计,截至2023年底,全国机动车保有量达4.35亿辆,其中汽车3.36亿辆;机动车驾驶人达5.23亿人,其中汽车驾驶人4.86亿人。伴随汽车的逐步普及,车联网在十年内经历了巨大的技术变革,汽车智能网联功能已成为当前新车标配,百姓对汽车功能的需求越来越多元化,提供座舱娱乐、自动驾驶等功能的新型汽车部件日趋成熟,多种汽车电子电气架构随之涌现。
绿盟科技研究通讯
2024/07/12
5390
车联网安全技术现状、突破及趋势
浅析车联网安全技术要点
现在的汽车变得越来越聪明了,启用泊车系统则汽车可以自主寻找停车位,启用自适应巡航系统则汽车可自动调速跟车行驶,然而我们在享受汽车智能化带给我们便捷和舒适的同时,也面临智能汽车所带来的安全问题,那么智能
FB客服
2018/02/28
1.7K0
浅析车联网安全技术要点
为什么自动驾驶需要5G?
Level 1:辅助人工驾驶,可实现单一的车速或转向控制自动化,仍由人工驾驶(如定速巡航、ACC)。
鲜枣课堂
2019/07/20
8340
车联网正在大跨步发展,如果能解决安全问题就可以飞了
最新研究数据显示,预计2016年年底中国全年累计汽车销售将达到2619万辆。届时,汽车保有量将达到惊人的1.93亿辆,这也是我国汽车保有量的最高数据。随着国内汽车市场的逐渐饱和以及传统造车技术的日趋成
镁客网
2018/05/28
8453
有效方案保护车联网企业的“第一公里”,让无人驾驶全速前进
2021世界智能网联汽车大会召开,会上宣布,顺义区第三批自动驾驶测试道路顺利通过验收,截至目前,顺义区累计开放测试道路77条,双向共计408.78公里,成为北京市自动驾驶测试道路里程最长、场景最丰富的地区。
犀思云Syscloud
2024/01/03
2120
有效方案保护车联网企业的“第一公里”,让无人驾驶全速前进
车联网应用场景超乎想象,市场机遇就在眼前
车联网,作为物联网的核心应用,在《国家“十二五”科学技术发展规划》中就已经成为国家科技的重要项目,在汽车电子、信息通信及软件解决方案等领域得到了国家的重点扶持。多年前,车联网还在后装市场上厮杀,而现在
镁客网
2018/05/29
1.7K0
无人配送中的IOT
自动驾驶是一个终将改变世界的技术,而我们始终坚信,在实现自动驾驶的路上,作为细分场景的无人配送将更快地实现落地,从而给人们的生活带去更多有趣的体验。而在无人配送落地的路上,我们尝试了多个方向和技术,这其中也包括了大家熟知的IoT。IoT(Internet of Everything),即物联网,被认为会成为继计算机、互联网之后信息产业的第三次浪潮,而IoT在无人配送场景中的应用,将是无人配送落地的关键一步。
美团无人配送
2019/04/26
9380
无人配送中的IOT
5G vs WiFi:是相爱还是相杀?
目前,随着5G的发展越来越快,业界开始出现了一些质疑声:5G到来之后,WiFi 6是否还有存在的必要?实际上,5G跟WiFi 6的用例在很大程度上是互补的,这将在本世纪20年代初形成一个有趣的竞争环境。
SDNLAB
2019/06/18
1.1K0
5G vs WiFi:是相爱还是相杀?
手机巨头关注的5G,可不仅仅是5G网络那么简单!
2018年6月,国际移动通信标准化组织批准了第5代移动通信技术,从那一刻起,我们就算进入5G时代了。
齿轮易创说互联网
2019/02/26
5540
“全虚拟化网络”对车联网的价值
目前全球经济整体步入衰退周期,出现自1970年衰退后复苏以来最严重的下滑,为抓住下一波智能制造万物互联的经济发展浪潮,西方发达国家和中国纷纷下场布局车联网。从技术派别来看主要分为三类: 第一类“谷歌派”,如Waymo、通用Cruise,戴姆勒、宝马等,以激光雷达为主要感知设备; 第二类“特斯拉派”,以视觉识别为核心; 第三类中国以“车路协同”的方式力争实现弯道超车。 根据前瞻产业研究院的数据显示,到2025年全球车联网将覆盖接近60%的汽车,全球车联网市场规模2025年将超过1.5万亿元,2020-2025
SDNLAB
2022/09/29
3780
“全虚拟化网络”对车联网的价值
车联网的相关知识
车联网(Internet of Vehicles)概念引申自物联网(Internet of Things),是以车内网、车际网和车载移动互联网为基础,按照约定的通信协议和数据交互标准,在车-X(X:车、路、行人及互联网等)之间,进行无线通讯和信息交换的大系统网络,是能够实现智能化交通管理、智能动态信息服务和车辆智能化控制的一体化网络,是物联网技术在交通系统领域的典型应用。
用户5777378
2019/07/08
1.8K0
车联网的相关知识
「软件定义汽车」背后:海量代码的安全代价
作者/ 曹锦 虽然汽车数据安全在近两年才开始受关注,但这并不意味着相关隐患只在这几年才出现。 在过去五六年间,包括宝马、Jeep以及特斯拉在内的一些知名车型,都曾经被黑客或白帽通过特定的技术手段,通过远程的方式入侵系统,进行开锁、开灯甚至制动、加减速等操控,导致了大规模的召回。 通过近日在ISC举办的「车联网安全论坛」上得到的信息,各位专家均认为,相比传统的物理接触型安全影响,如今智能网联汽车所面临的更严重的安全隐患,还是隐藏在空中看不见的这一部分。 越先进,越快速,也越危险 80年代的时候,一辆汽车大概
机器之心
2023/03/29
2740
「软件定义汽车」背后:海量代码的安全代价
推荐阅读
相关推荐
T-BOX硬件方案:STM32与SD NAND(贴片式TF卡)存储的创新应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验