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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python安装教程(新手)
第一次接触Python,可能是爬虫或者是信息AI开发的小朋友,都说Python 语言简单,那么多学一些总是有好处的,下面从一个完全不懂的Python 的小白来安装Python 等一系列工作的记录,并且遇到的问题也会写出,让完全不懂的小白也可上手安装,并且完成第一个Hello world代码。
全栈程序员站长
2022/08/12
1K0
Python安装教程(新手)
python环境安装(一)[通俗易懂]
之前安装过很多次了,但是每次到新电脑上或者版本更新后都又要找在线教程。今天打算把流程写下来,便于以后随便在其他电脑上可以安装。
全栈程序员站长
2022/07/22
5080
python环境安装(一)[通俗易懂]
Python安装-windows环境下
在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包;
用户6184845
2019/09/08
7580
Python安装第三方库(离线+在线)
一、离线安装 以安装resquest包为例 1、检查依赖 模块的依赖包检查:在CMD命令窗口中输入 pip show requests
全栈程序员站长
2022/09/27
1.1K0
Python安装第三方库(离线+在线)
pycharm安装教程anaconda_幸福原来如此简单作文800字
** 本人目前大一,大数据~专业(相同专业的小可爱们可以一起讨论、共同进步哈)前几周刚接触到python这门课,起初安装一头蒙,于是开始疯狂的从网上找各种资源来了解这门课程及安装过程,以下是我的安装过程,希望可以帮助到一些刚入门的小白。
全栈程序员站长
2022/09/27
2070
pycharm安装教程anaconda_幸福原来如此简单作文800字
快速查找Python安装路径方法「建议收藏」
我相信一定有很多的人跟我一样,经常忘记Python安装的路径,每当用到的时候,最笨的办法就是在全局电脑里,直接查找Python,这样是肯定能查到的,但是如果你的电脑文件超级多,这将是一个工厂量很大的事情,你要等好久的。
全栈程序员站长
2022/07/01
1.1K0
快速查找Python安装路径方法「建议收藏」
Python安装和使用
点击 Customize installation进入一步(方便我们自定义安装路径)
Python知识大全
2020/02/12
6220
python安装pygame教程_python-pygame安装教程
第一个是python的。先打开计算机,然后点击‘系统属性’然后点击‘高级系统设置’然后点击‘环境变量’在系统变量中找到path选择并编辑在末尾添加“;”号来作为与前面的间隔。我将python安装到了c盘的py文件夹 所以我的安装目录是C:\py。(不要关闭编辑系统变量的界面,我们接着找第二个环境变量)
全栈程序员站长
2022/08/31
1.8K0
python安装pygame教程_python-pygame安装教程
python官网下载步骤图解-如何下载安装python 看完你就知道了[通俗易懂]
首先,在python的官网下载python版本,需要下载你电脑对应的版本,在【计算机】-【属性】中查看自己是32位还是64位操作系统(官网地址在网上自行搜索)。
全栈程序员站长
2022/08/12
5.8K0
python官网下载步骤图解-如何下载安装python 看完你就知道了[通俗易懂]
快速查找Python安装路径方法
我相信一定有很多的人跟我一样,经常忘记Python安装的路径,每当用到的时候,最笨的办法就是在全局电脑里,直接查找Python,这样是肯定能查到的,但是如果你的电脑文件超级多,这将是一个工厂量很大的事情,你要等好久的。
py3study
2020/01/09
2.4K0
如何给Python安装.whl文件
安装whl文件也是迫不得已的最后选择,因为有些包其他指令没成功,如果安装了anaconda会方便很多,详见另一篇https://blog.csdn.net/weixin_41592575/article/details/89372297
全栈程序员站长
2022/08/23
2.8K0
如何给Python安装.whl文件
pycharm django环境搭建_window10创建还原点
不像Unix/Linux系统默认安装了Python环境,Windows下安装Django 前请先确保已经安装了Python环境。Python官网下载,根据需求下载完毕即可安装,注意在安装时要勾选 add to path. 安装完毕 win+r 打开cmd 输入 python –version 验证是否安装成功。
全栈程序员站长
2022/09/27
5140
pycharm django环境搭建_window10创建还原点
查看Python安装路径
由于笔者自己经常忘记了如何查看Python的安装路径,又经常会用到Python的安装路径,因此记录一下,我们可以在命令行模式下输入:
py3study
2020/01/16
3.9K0
python官网下载步骤图解-最新Python安装图文教程[很详细]
如今,Python已经成为一种非常主流的编程语言了,很多小伙伴都开学习python,但是对于刚刚接触python的纯小白来说,不太会安装,下面我们就介绍介绍python最新安版本3.7.4的安装教程。
全栈程序员站长
2022/08/18
7.6K0
python官网下载步骤图解-最新Python安装图文教程[很详细]
python安装numpy后pycharm导入不了_如何导入numpy
出现平台不支持,python版本太高,numpy不匹配,刚开始下的3.7的最新版,重新下载3.6的版本,安装成功。
全栈程序员站长
2022/09/28
1.5K0
python安装numpy后pycharm导入不了_如何导入numpy
pycharm安装opencv-python_geany配置python
第一步:下载python安装包 从python的官网(python下载地址)中找到最新版本的python安装包,点击进行下载即可。 需要注意的是,要选择与自己电脑位数匹配的安装包,32位的机器下载32位安装包,如果是64位的即下载64位安装包
全栈程序员站长
2022/09/27
4510
pycharm安装opencv-python_geany配置python
python安装虚拟环境步骤_python虚拟环境迁移
http://blog.csdn.net/pipisorry/article/details/47008981
全栈程序员站长
2022/09/27
8K0
python安装虚拟环境步骤_python虚拟环境迁移
python whl文件安装_python whl文件怎么安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/
全栈程序员站长
2022/09/02
2.2K0
python安装与python、pip的环境变量配置
注意勾选上ANd Python 3.9 to PATH 不然要自己去创建环境变量。
code随笔
2022/03/31
7930
python安装与python、pip的环境变量配置
Python安装教程-史上最全
​ 目前Python官方推荐:使用Python3.X系列版本(不向下兼容python2.X版本)
全栈程序员站长
2022/09/15
9340
推荐阅读
相关推荐
Python安装教程(新手)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验