栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

grpc服务端(数据库相关)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

grpc服务端(数据库相关)

项目源码 博客地址 第一步,启动GRPC服务
	//启动GRPC
	grpcServer := grpc.NewServer()
    //注册一个GRPC服务
	server.RegisterServer(grpcServer)
	//注册GRPC反射服务
	reflection.Register(grpcServer)
	//以TCP协议启动GRPC
	err = grpcServer.Serve(Listen)
启动TCP服务
Listen, err := net.Listen("tcp", PORT)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
第二步,在对应的服务端封装方法
func RegisterServer(s *grpc.Server) {
	bean.RegisterUserServiceServer(s, &User{})
	bean.RegisterUserfServiceServer(s, &Userf{})
}
.proto文件
syntax = "proto3"; //指定版本
option go_package = "../bean";


package bean;

service UserService{
    rpc User(UserRequest) returns (UserResponse){}
  }
   
  // 函数参数
  message  UserRequest{
    string  name = 1;
    int32 age=2;
    string sex=3;
  }
   
  // 函数返回值
  message  UserResponse{
    int32 code=1;
    string msg=2;

}
生成.pb.go&grpc.pb.go文件
protoc --go_out=./ .文件
protoc --go-grpc_out=./ .文件
第三步,实现第二步封装的方法
type User struct {
	*bean.UnimplementedUserServiceServer
}

func (user *User) User(ctx context.Context, in *bean.UserRequest) (*bean.UserResponse, error) {
	var res = &bean.UserResponse{
		Code: 200,
		Msg:  "success",
	}
	//执行操作
	err := professor.AddUser(in)
	//
	if err != nil {
		res.Code = 5000
		res.Msg = "服务繁忙"
		return res, nil

	}
	return res, nil
}
第四步,实现的方法调用processor(对req数据加工)方法实习数据库操作
func (user *User) User(ctx context.Context, in *bean.UserRequest) (*bean.UserResponse, error) {
	var res = &bean.UserResponse{
		Code: 200,
		Msg:  "success",
	}
	//调用processor(对req数据加工)方法实习数据库操作,返回值是error
	err := professor.AddUser(in)
	if err != nil {
		res.Code = 5000
		res.Msg = "服务繁忙"
		return res, nil

	}
	return res, nil
}
第五步,实现processor的方法
func AddUser(req *bean.UserRequest) error {
	tx, _ := dbc.Mysql.Begin()
	//数据库方法调用
	err := db.MYSQL_AddUser(req, tx)
	if err != nil {

		return err
	}
	err = db.MONGO_AddRoomLayout(req)
	if err != nil {
		return err
	}
	return nil
}
第六步,实现数据库方法 封装
func MYSQL_AddUser(req *bean.UserRequest, tx *sql.Tx) error {
	return mysql.AddUser(req, tx)
}
func MYSQL_FindUser() error {
	return mysql.FindUser()
}
实现
func AddUser(req *bean.UserRequest, tx *sql.Tx) error {
	str2 := "INSERT INTO user(name,age,sex) VALUES(?,?,?) "
	_, err := tx.Exec(str2, req.Name, req.Age, req.Sex)
	// fmt.Println("执行sql语句" + str2)
	// fmt.Printf("req: %v %v %vn", req.Name, req.Age, req.Sex)
	if err != nil {
		fmt.Println(err.Error())
		return err
	}
	tx.Commit()
	fmt.Println("Mysql执行sql语句")

	return nil
}
最后postman测试成功
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号