概述

由于RpcCall是一个通用函数,我们无法对其返回值指定类型,为了简化代码,mqant参考redis封装了几个RPC返回类型断言函数,方便开发者使用

断言函数介绍

protocolbuffer断言

protobean := new(rpcpb.ResultInfo)
err:=mqrpc.Proto(protobean,func() (reply interface{}, errstr interface{}) {
    return self.Call(
        ctx,
        "rpctest",     //要访问的moduleType
        "/test/proto", //访问模块中handler路径
        mqrpc.Param(&rpcpb.ResultInfo{Error: *proto.String(r.Form.Get("message"))}),
    )
})
log.Info("RpcCall %v , err %v",protobean,err)

自定义结构断言

rspbean := new(rpctest.Rsp)
err:=mqrpc.Marshal(rspbean,func() (reply interface{}, errstr interface{}) {
    return self.Call(
        ctx,
        "rpctest",     //要访问的moduleType
        "/test/marshal", //访问模块中handler路径
        mqrpc.Param(&rpctest.Req{Id: "hello 我是RpcInvoke"}),
    )
})
log.Info("RpcCall %v , err %v",rspbean,err)

字符串断言

rstr,err:=mqrpc.String(
    self.Call(
    context.Background(),
    "helloworld",
    "/say/hi",
    mqrpc.Param(r.Form.Get("name")),
    ),
)
log.Info("RpcCall %v , err %v",rstr,err)

其他类型断言

    int

    bool

    map\[string\]string

    .... 

Copyright © 梁大帅 2020 all right reserved,powered by Gitbook该文件修订时间: 2020-06-03 09:38:44

results matching ""

    No results matching ""