thriftudp
1.0.0
中文说明
Thrift는 문법 지원 oneway 키워드를 위해 UDP 프로토콜에 가장 적합한 IDL 언어 중 하나입니다. 그러나 공식 패키지는 TCP 전송 및 서버 프레임 워크 만 지원합니다.
이 패키지의 목적은 UDP 지원으로 thrift 확장하는 것입니다. 다음과 같은 기능을 제공합니다.
프로젝트의 경우 github.com/jaegertracing/jaeger는 오래된 중고품 버전에서 매우 아름다운 구현을 가지고 있습니다. 이 프로젝트는 새로운 버전 지원을 위해 작은 수정으로 transport 구현을 사용합니다.
Apache/Thrift가 이미 설치되었는지 확인하십시오.
namespace go echo
struct Request {
1: string message ;
}
service Echo {
oneway void Ping( 1: Request request );
}
thrift 사용 프레임 워크 코드 생성 :
$: cd example
$: thrift -out thrift -r --gen go idl/echo.thrift package main
import (
"context"
"log"
"github.com/x-mod/routine"
"github.com/x-mod/thriftudp"
"github.com/x-mod/thriftudp/example/thrift/echo"
)
type echoImpl struct {}
func ( srv * echoImpl ) Ping ( ctx context. Context , request * echo. Request ) ( err error ) {
log . Println ( "echo Ping Request Message: " , request . Message )
return nil
}
func main () {
routine . Main ( context . TODO (), routine . ExecutorFunc ( func ( ctx context. Context ) error {
srv := thriftudp . NewServer (
thriftudp . ListenAddress ( "127.0.0.1:8888" ),
thriftudp . Processor (
echo . NewEchoProcessor ( & echoImpl {}),
2 ),
)
if err := srv . Open ( ctx ); err != nil {
return err
}
log . Println ( "serving at 127.0.0.1:8888 ..." )
return srv . Serv ( ctx )
}))
} package main
import (
"context"
"log"
"os"
"strings"
"github.com/apache/thrift/lib/go/thrift"
"github.com/x-mod/thriftudp/example/thrift/echo"
"github.com/x-mod/thriftudp/transport"
)
func main () {
tr , err := transport . NewTUDPClientTransport ( "127.0.0.1:8888" , "" )
if err != nil {
log . Println ( err )
return
}
client := echo . NewEchoClientFactory ( tr , thrift . NewTCompactProtocolFactory ())
req := echo . NewRequest ()
req . Message = strings . Join ( os . Args [ 1 :], " " )
if err := client . Ping ( context . TODO (), req ); err != nil {
log . Println ( err )
return
}
} 자세한 내용은 example 확인하십시오.