一、寫 thrift 文件定義好 service :方法、入參出參
二、生成 代碼併發包
三、編寫 server 端實現
四、本地啓動server端,進行測試
五、打包啓動 rpc 服務java
具體實現:
一、寫 thrift 文件定義好 service 以及 入參出參的 struct
namespace 定義生成的文件目錄和名稱。git
namespace py test_thrift.action_card namespace go test_thrift.action_card namespace java test_thrift.action_card enum ResouceCode { ALPHA = 1, BETA = 2 } 序號:類型 名稱 struct BannerParams { 1: i64 member_id; 2: i32 num; } service MemberService { Banner get_banner(1: BannerParams params) }
生成 py 或者 go 代碼,併發布鏡像
gen:
thrift -r --gen go:package_prefix=github.com/serenity/gen-go/ ./thrift_files/test/test.thriftgithub
二、編寫 server 端實現golang
package service import ( "github.com/serenity/gen-go/test_thrift/member" "github.com/serenity/golang/pkg/action_card/controller" "github.com/serenity/golang/pkg/common/model" ) func GetMemberServiceProcessor(msgChan chan model.Message) *member.MemberServiceProcessor { // service - api memberService := controller.NewMemberService() // processor return member.NewMemberServiceProcessor(memberService) }
三、客戶端調用測試api
var memberClient = member_service.NewMemberServiceClient(tc.New("MemberService", tc.Timeout(500*time.Millisecond), tc.TargetName("member"))) params := memberClient.BannerParams{0,0} banner := memberClient.GetBanner(params) fmt.Println(banner)
四、打包啓動 rpc 服務併發
servicesMap := map[string]thrift.TProcessor{ "MemberService": memberService.GetMemberServiceProcessor(), } server.New( servicesMap, server.SentryDSN(conf.EnvConfig.SentryDSN), server.Tracing(conf.EnvConfig.ChoosedClusterAddrs), server.Slowlog(500*time.Millisecond), ).Run("0.0.0.0:10000")
五、git 上線測試