写给Java程序员的GRPC入门系列(2)

news2024/10/7 18:29:43

点击上方GRPC专栏看完整系列

文章目录

  • Abstract
  • 前置依赖
  • 本文
    • 初始状态
    • 编写protobuffer文件
    • 生成代码
  • 下一步

Abstract

网上有很多GRPC的例子,但是却没有能够写给普通Java开发人员手把手入门少走弯路的教程。
本教程保证按照步骤一步步来你就可以完成GRPC从0到1的构建。
源码地址:grpc-helloworld-for-java

前置依赖

装有maven和JDK。并且保证javac命令可用。

本文

本文是系列的第2篇,将编写protobuffer文件并生成代码。 代码在分支:step2-protobuffer。

初始状态

git clone https://github.com/gaoxingliang/grpc-helloworld-for-java.git
git checkout step1-import-mvn

编写protobuffer文件

在示例中我们会编写3个proto文件,分别模拟有2个模块,user,foods和一个common模块。
目录如下:在这里插入图片描述

vo.proto内容:

syntax = "proto3";

option java_package = "com.example.grpc.common.vo";

message Empty{
}

food.proto:

syntax = "proto3";

option java_package = "com.example.grpc.food";

import "common/vo/vo.proto";

service Food {
  rpc list(Empty)  returns (FoodResponse);
}

message FoodResponse{
  repeated string foods = 1;
  int32  responseCode = 2;
}

user.proto:

syntax = "proto3";

option java_package = "com.example.grpc.user";
import "common/vo/vo.proto";

service User{
  rpc login(LoginRequest)  returns (APIResponse);
  rpc logout(Empty)  returns (APIResponse);
}

message LoginRequest{
  string username = 1 ;
  string password = 2 ;
}

message APIResponse{
  string responsemessage = 1;
  int32  responseCode  = 2;
}

可以看到User这个服务中提供了2个RPC login 和logout。 以及对应的请求和响应。

生成代码

cd grpcExample
mvn

执行完后,可以看到生成了很多代码:
在这里插入图片描述

下一步

下一步我们会编写自己的服务端和客户端实现来测试RPC功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模型驱动PDR、数据驱动PDR实验效果对比

本学期的室内导航位置服务课程结束了,最后有一个结课作业做了一些工作,在这里分享给大家,同时也是自己的一个记录。 主要内容包括以下四个方面: 模型驱动PDR数据驱动PDR实验效果对比模型驱动PDR测试效果数据驱动PDR-RoNIN官方预训…

JSP ssh相亲网站系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh相亲系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发 。开发环境为TOMCAT7.0,Myeclip…

MergeTree原理之存储

我们都知道在MergeTree中数据是按列存储的,但是具体到存储的细节、以及如何工作的,都存在很多疑问。数据存储,就好比一本书中的文字,在排版时,绝不会密密麻麻地把文字堆满,这样会导致难以阅读。更为优雅的做…

Git学习:各阶段回退方法

文章目录一、问题背景二、解决方式1. 回退情况1:文件在工作区进行回退2. 回退情况2:文件在暂存区进行回退3. 回退情况3:文件在本地仓库进行回退4. 回退情况4:文件已经在远程仓库中一、问题背景 Git 是分布式的软件管理系统。在把…

代码随想录拓展day4 205. 同构字符串;1002. 查找常用字符;925.长按键入;844.比较含退格的字符串

代码随想录拓展day4 205. 同构字符串;1002. 查找常用字符;925.长按键入;844.比较含退格的字符串 哈希表和字符串的一些应用,放到一起了。 同构字符串 https://leetcode.cn/problems/isomorphic-strings/description/ 刚开始以…

spring boot:集成支付宝(沙箱环境)(spring boot 2.4.0 / wap/h5方式 )

一,配置支付宝沙箱环境: 1,沙箱的地址: 登录 - 支付宝 也可以登录后,从控制台点击 研发服务 进入 2,下载开发助手:并生成密钥 从这个页面,按自己所在的平台下载, 当前支持 windows,macos 开发助手简介 &#xf…

自定义Tango Control设备服务在Ubuntu中的测试

文章目录环境create a device classcompile the device classregister the devicestart the deviceexplore the device故障问题解决参考继续上一篇:https://blog.csdn.net/woshigaowei5146/article/details/128443892?spm1001.2014.3001.5501 环境 虚拟机&#xf…

布隆过滤器 以及缓存穿透问题

1. 前言 今天从客观的角度来分析下,什么是缓存穿透,什么是布隆过滤器,布隆过滤器是如何解决缓存穿透的。 2. 适合人群 对布隆过滤器不熟悉的人对Redis 缓存穿透不熟悉的人 3. 开始 3.1 什么是缓存穿透 其实通过上图我们可以知道&#xff0…

(七)Filter

Filter 表示过滤器,是JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等..一、Filte…

彻底理解Redis持久化

前言 大家都知道Redis一个内存数据库,它支持2种持久化方式:RDB(Snapshot 内存快照) ,AOF(append only file)。持久化功能将内存中的数据同步到磁盘来避免Redis发生异常导致数据丢失的情况。当Redis实例重启时,即可利用之前持久化的文件实现数…

软件项目管理教程

软件项目管理 1. 软件项目管理 1.1 概述 概念 项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力 软件项目特征 目标性 相关性 周期性 独特性 没有完全一样的项目”,项目的这种独特性对实际项目管理有非常重要的指导意义,因此…

跨境电商日本市场再创纪录,亚马逊失去流量第一位置

从跨境电商服务行业市场分析人员拿到的近期的各平台的销售数据和相关工作总结来看,美国市场微热,而反观欧洲市场则有些遇冷。 此外,近几年的疫情及各国相关政策并未影响到跨境电商市场的整体大好趋势,而伴随着疫情逐渐被控制&…

认真学习MySQL中的MVCC机制

什么是MVCC?MVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性操作有了保证。换言之&#…

Aspose.PDF for Java系列1-使用前说明

一、关于pdf文件说明 什么是pdf文件? PDF是Portable Document Format的缩写,用来以电子形式显示文档,不受软件、硬件或者操作系统的影响。 最初是由Adobe开发,是一种基于PostScript格式的通用兼容文件格式,现在已成为…

当云原生网关遇上图数据库,NebulaGraph 的 APISIX 最佳实践

本文介绍了利用开源 API 网关 APISIX 加速 NebulaGraph 多个场景的落地最佳实践:负载均衡、暴露接口结构与 TLS Termination。 API 网关介绍 什么是 API 网关 API 网关是位于客户端和服务器之间的“中间人”,用于管理、监控和保护 API。它可以在 API 之…

GAMES101 现代计算机图形学入门

Lecture1 Overview of CG 计算机图形学概述Lecture2 Review of Linear Algebra 向量与线性代数Lecture3 2D Transformation 基础变换(二维)3.1 线性变换 (寻找变换前后直角坐标坐标关系)3.2齐次坐标 Homogeneous Coordinate3.3 仿射变换Affine Transform…

SpringBoot2核心技术(核心功能)- 05、Web开发【5.4 数据响应与内容协商】

4、数据响应与内容协商 1、响应JSON 1.1、jackson.jarResponseBody <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> web场景自动引入了json场景<dependenc…

在黑金zynqmp 上用emmc 启动的那些坑

缘由&#xff1a;由于硬件设计可能存在问题&#xff0c;导致sd 开启动失败&#xff0c;高速的时候&#xff0c;在建立VFS 时就会引起kernel 崩溃&#xff0c;官方的板子就正常&#xff0c;自己的板子第一版硬件可以&#xff0c;第二版就不行 思路&#xff1a;从emmc 启动 替代…

Hadoop 的基础知识

Hadoop 的基础知识1. Hadoop 简介2. Hadoop 的发展简史3. Hadoop 现状4. Hadoop 特性优点5. Hadoop 发行版本6. Hadoop 架构变迁7. Hadoop 集群集体概念1. Hadoop 简介 Hadoop 官网: https://hadoop.apache.org/ Apache Hadoop 软件库是一个框架, 是 Apache 软件基金会的一款开…

IoT 物联网将如何影响 SCADA ?

IoT 物联网将如何影响 SCADA &#xff1f;-钡铼技术 随着工业物联网&#xff08;IIOT&#xff09;或工业4.0的提出&#xff0c;未来工业自动化将是大势所趋&#xff0c;机器设备运行自动化&#xff0c;人不断被机器替代。那么&#xff0c;这些发展方向会对SCADA有什么影响&…