Go语言开发gRpc服务,springboot2.x客户端调用

本文介绍了如何使用Golang开发gRPC服务,并使用Spring Boot创建gRPC客户端进行调用。详细步骤包括Golang环境配置、proto文件编写、服务端与客户端代码生成及启动,以及Spring Boot项目中gRPC服务端和客户端的实现。同时,提供了两个项目的源码链接,供读者深入研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Golang开发gRpc服务

  1. 首先本机安装proto客户端,并配置环境变量
  2. 创建golang项目 结构如下图

3.新建一个helloworld.proto文件,内容如下

syntax = "proto3";

package helloworld;
option java_package = "com.example.grpc.helloworld";
option java_multiple_files = true;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

这个文件稍后还会用在springboot项目中

4.使用命令将proto文件生成成go文件,命令如下

# proto文件编译为go文件命令
// protoc --go_out=plugins=grpc:{输出目录}  {proto文件}   
protoc --go_out=plugins=grpc:./helloworld/ ./helloworld.proto

5.在server文件夹下 新建main.go,作为gRpc的服务端

/*
@Time : 2020/5/25 15:01
@Author : wkang
@File : server
@Description:
*/
package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
	"log"
	"net"
	pb "../helloworld"
)

const (
	port = ":50051"
)

// server is used to implement helloworld.GreeterServer.
type server struct{}

// SayHello implements helloworld.GreeterServer
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
	fmt.Println("######### get client request name :"+in.Name)
	return &pb.HelloReply{Message: "GO gRpc服务的响应为: Hello " + in.Name}, nil
}

func main() {
	lis, err := net.Listen("tcp", port)
	fmt.Println(port)
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}
	s := grpc.NewServer()
	pb.RegisterGreeterServer(s, &server{})
	// Register reflection service on gRPC server.
	reflection.Register(s)
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}

6.服务端创建成功,我们在server文件夹下运行终端 输入命令启动服务

go run main.go

7.可以看到服务启动成功,我打印了一下端口号

8.我们可以初始化一个客户端,来看看服务端是否正常,在client文件夹下,添加main.go,代码如下

/*
@Time : 2020/5/25 15:01
@Author : wkang
@File : server
@Description:
*/
package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
	"log"
	"net"
	pb "../helloworld&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值