Go-zero微服務(wù)篇之RPC demo

image

先使用goctl生成一個proto然后修改一下通過proto生成pb那些等等

image

Server logic

image
邏輯處理
package logic

import (
    "context"
    "fmt"

    "server/internal/svc"
    "server/server"

    "github.com/tal-tech/go-zero/core/logx"
)

type LoginLogic struct {
    ctx    context.Context
    svcCtx *svc.ServiceContext
    logx.Logger
}

func NewLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LoginLogic {
    return &LoginLogic{
        ctx:    ctx,
        svcCtx: svcCtx,
        Logger: logx.WithContext(ctx),
    }
}

func (l *LoginLogic) Login(in *server.LoginReq) (*server.LoginRep, error) {
    // todo: add your logic here and delete this line

    return &server.LoginRep{
        Msg:fmt.Sprintf("登陸成功:%s",in.Name),
    }, nil
}

etcd配置

image

客戶端

注意:與服務(wù)的配置的etcd信息一一對應(yīng)

image
package main

import (
    "context"
    "fmt"
    "log"
    pb "server/server"
    "github.com/tal-tech/go-zero/core/discov"
    "github.com/tal-tech/go-zero/zrpc"
)

func main() {
    client := zrpc.MustNewClient(zrpc.RpcClientConf{
        Etcd: discov.EtcdConf{
            Hosts: []string{"127.0.0.1:2379"},
            Key:   "server.rpc",
        },
    })
    hello := pb.NewServerClient(client.Conn())
    reply, err := hello.Login(context.Background(), &pb.LoginReq{Name: "go-zero"})
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(reply.Msg)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容