dubbogo-1 基础rpc服务

文章目录

    • 基本环境处理
    • 编译pb接口
    • 开启rpc调用
    • 业务观察
    • qa1 能取出protoc里面的字段值吗?

基本环境处理

https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/

在这里插入图片描述

这里没有 protoc-gen-go --version

执行

 go get -u github.com/golang/protobuf/protoc-gen-go

在这里插入图片描述
进入到这个目录执行

go build
go install

这样就会出现在 go/bin 目录里面了,如果已经增加了这个环境变量了,就可以使用该命令了

在这里插入图片描述

分别验证

protoc --version

libprotoc 22.2

protoc-gen-go-triple --version

protoc-gen-go-triple 1.0.8

protoc-gen-go --version

protoc-gen-go: unknown argument “–version” (this program should be run by protoc, not directly)

这个错误先不管。

编译pb接口

protoc --go_out=. --go-triple_out=. ./samples_api.proto
  • –go_out=. 用到protoc-gen-go插件,生成文件到当前目录
  • –go-triple_out=. 使用 protoc-gen-go-triple插件,生成文件到当前目录

当然默认的样例工程其实已经包含了编译好的文件

开启rpc调用

回到项目根目录

go mod tidy

分别启动server端和client端

cd go-server/cmd
go run .
cd go-client/cmd
go run .

服务端效果

在这里插入图片描述

客户端效果

在这里插入图片描述

业务观察

在这里插入图片描述

这个的提供的样例模块

protoc的定义是

message HelloRequest {string name = 1;
}

翻译出来的go代码对应核心的地方就是这里
在这里插入图片描述

client代码增加注释

package mainimport ("context"
)import ("dubbo.apache.org/dubbo-go/v3/common/logger""dubbo.apache.org/dubbo-go/v3/config"_ "dubbo.apache.org/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息
}

qa1 能取出protoc里面的字段值吗?

可以直接用reply.xxx 取值

package mainimport ("context"
)import ("dubbo.apache.org/dubbo-go/v3/common/logger""dubbo.apache.org/dubbo-go/v3/config"_ "dubbo.apache.org/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息logger.Infof("Name is %v \n", reply.Name)logger.Infof("Age is %v \n", reply.Age)logger.Infof("Id is %v \n", reply.Id)
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初出茅庐的小李博客之Windows11运行Linux记录

安装教程 超简单,不安装虚拟机,Windows11运行Linuxhttps://zhuanlan.zhihu.com/p/393484912 注意事项 出现错误有可能是少了驱动 驱动下载地址 https://link.zhihu.com/?targethttps%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_updat…

04、MySQL-------MyCat实现分库分表

目录 九、MyCat实现分库分表1、分库分表介绍:横向(水平)拆分**垂直分表**:水平分表:**分库分表** 纵向(垂直)拆分分表字段选择 2、分库分表操作:1、分析图:2、克隆主从3、…

UART通信——笔记

UART通信特点 异步、全双工、串行。 只使用一对线就可以实现数据的通信,节约成本。 数据一位一位发送,数据传输较慢。 只能一对一通信。 如何实现通信的? UART: 发送数据的TX接受数据的RX参考GND UART是异步通信,…

软件工程与计算总结(二十三)软件工程职业基础

本系列最后一更,《软计》系列总结的大结局!本栏目告一段落,之后会结合真题和练习题再发布新的总结~ 往期链接: 《软件工程与计算》总结 一.软件工程职业 1.行业的发展 20世纪50年代:计算机还是研究型机器&#xff…

Redis数据结构之quicklist

前言 为了节省内存,Redis 推出了 ziplist 数据类型,采用一种更加紧凑的方式来存储 hash、zset 元素。因为查找的时间复杂度是 O(N),且写入需要重新分配内存,所以它仅适用于小数据量的存储,而且它还存在 连锁更新 的风…

龙芯3A3000源码编译安装deepin-ide

安装环境 系统为统信专业版1050 CPU为龙芯3A3000 安装步骤 1.安装所有依赖库 sudo apt-get install git debhelper cmake qt5-qmake qtbase5-dev qttools5-dev qttools5-dev-tools lxqt-build-tools libssl-dev llvm llvm-dev libclang-dev libutf8proc-dev libmicrohttpd-d…

ChatGPT/GPT4科研技术应用与AI绘图及论文高效写作

2023年我们进入了AI2.0时代。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车,就有可能被淘汰在这个数字化时代,如何能高效地处理文本、文献查阅、PPT…

使用 ClickHouse 深入了解 Apache Parquet (二)

【squids.cn】 全网zui低价RDS,免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 这篇文章是我们的 Parquet 和 ClickHouse 博客系列的第二部分。在这篇文章中,我们将更详细地探讨 Parquet 格式,重点介绍使用 ClickHouse 读写文…

leetcode分类刷题:如何更好地理解递归

文章目录 概念含义递归三要素递归算法的编程模型递归问题分类递归vs循环(迭代)参考文献 参考知乎上递归下的一个高赞回答,觉得写的非常好,挑选有助于自己理解的内容进行简单总结。 概念含义 1、递归(Recursion)是指在函数的定义中调用函数自身的方法&…

白水三佳电脑ERP部署

安装宝塔面板,有这个方便很多,可以省下3天的环境部署时间。 移动端, 先取移动版的压缩包,上传至服务器/www/wwwroot/目录下面,直接解压到当前目录后会生成/www/wwwroot/m/的目录,移动版就在这里面了。以下…

智慧河湖方案:AI赋能水利水务,构建河湖智能可视化监管大数据平台

一、方案背景 我国江河湖泊众多,水系发达。伴随着经济社会快速发展,水生态水环境问题成为群众最关注的民生议题之一。一些河流开发利用已接近甚至超出水环境承载能力,一些地区废污水排放量居高不下,一些地方侵占河道、围垦湖泊等…

【C++】哈希的应用 -- 位图

文章目录 一、位图的概念二、位图的实现三、库中的 bitset四、位图的应用五、哈希切割 一、位图的概念 我们以一道面试题来引入位图的概念: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中 我…

Linux远程管理工具

Linux远程管理服务器多基于 SSH 协议。本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 SecureCRT。 在使用远程管理工具之前,应先设置宿主机 Windows 与虚拟机 Linux 能够连通。 这里要注意 VMware 的网卡设置,Lin…

贝锐花生壳+Fooocus,快速自建可远程访问的SDXL,平替Midjourney

Midjourney、stable diffusion两款AI绘图工具是最近这段时间的热点。不过,事无完美,他们各有一些优缺点。 例如:stable diffusion虽然开源可私有化部署,但操作相对复杂,需要设置各类参数;Midjourney虽然简单…

Excel 5s内导入20w条简单数据(不使用多线程)

文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType:批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…

数学建模——最大流问题(配合例子说明)

目录 一、最大流有关的概念 例1 1、容量网络的定义 2、符号设置 3、建立模型 3.1 每条边的容量限制 3.2 平衡条件 3.3 网络的总流量 4、网络最大流数学模型 5、计算 二、最小费用流 例2 【符号说明】 【建立模型】 (1)各条边的流量限制 &a…

Python处理PDF——PyMuPDF的安装与使用详解

​​​​​​​ 1、PyMuPDF简介 1. 介绍 在介绍PyMuPDF之前,先来了解一下MuPDF,从命名形式中就可以看出,PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种…

Stable Diffusion原理

一、Diffusion扩散理论 1.1、 Diffusion Model(扩散模型) Diffusion扩散模型分为两个阶段:前向过程 反向过程 前向过程:不断往输入图片中添加高斯噪声来破坏图像反向过程:使用一系列马尔可夫链逐步将噪声还原为原始…

BAT032:批量替换当前目录下文件的部分字符

引严:编写批处理程序,实现批量替换当前目录下文件的部分字符。 一、新建Windows批处理文件 参考博客: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件,点击【编辑】。…

Django实现音乐网站 ⒇

使用Python Django框架做一个音乐网站, 本篇音乐播放器-添加播放音乐功能实现。 目录 创建播放器数据表 设置表结构 执行创建表 命令 执行 数据表结构 添加单个歌曲 创建路由 加入播放器视图 模板处理 基类方法 子页面调用 优化弹窗 加入layui文件 基…