thrift-go(golang)Server端笔记


  1、从thrift源码中拷贝go语言包(thrift\lib\go\thrift),放到go/src/下 2、新建go项目,实现server端服务接口   package main   import (       "fmt"       "os"       "taochees"       "thrift"       "strconv" )   type TestServiceImpl struct { }   var objService = new(xxxx)   func (this *TestServiceImpl) SearchData(param xxxx) (r xxxx, err error) {       if err != nil {               // Handle error               fmt.Println(err)               return nil, err       }       fmt.Println("接收请求...")       r, err = objSearchService.SearchData(*param)       return r, err }   func main() {       transportFactory := thrift.NewTTransportFactory()       protocolFactory := thrift.NewTBinaryProtocolFactory(false, false)         serverTransport, err := thrift.NewTServerSocket("172.17.1.1:7912")       if err != nil {               fmt.Println("Error!", err)               os.Exit(1)       }       handler := &TaocheESServiceImpl{}       processor := taochees.NewTaocheESServiceProcessor(handler)         server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)       fmt.Println("thrift server start...")       server.Serve() }   3、运行go-service文件:go run xxxx.go 系统出现以下结果即可说明启动正常: 4、成功启动后,即可编写Client端进行调用测试   5、测试通过后,可将go-service注册为系统服务,通过service命令来控制启动重启   注册服务前需将go文件进行编译(/.../go/bin/go build /....../xxxx.go),然后用于服务启动      服务指令为(xxxx为go文件编译后产生的可执行文件):/....../xxxx     附注: 运行go文件后server.Serve()执行通过,未成功启动Listen...,即系统显示: 原因一般是监听指定端口失败,可尝试更换端口,或查看该端口是否被占用(lsof -i ),如有占用,kill掉相应进程