Unmaintained: 目前没有资源维护这个项目。欢迎有时间的开发者接手。
assume you have started a Go rpcx server:
package mainimport ("context""flag""github.com/smallnest/rpcx/server")var (addr=flag.String("addr","192.168.31.82:8997","server address"))typeEchointfunc (t*Echo)Echo(ctx context.Context,args []byte,reply*[]byte)error {*reply= []byte("hello"+string(args))returnnil}funcmain() {flag.Parse()s:=server.NewServer()s.RegisterName("echo",new(Echo),"")s.Serve("tcp",*addr)}
You can run it as:
Then you can write the java client:
@TestpublicvoidtestSendMsg()throwsException {Messagereq =newMessage("Echo","Echo");req.setVersion((byte)0);req.setMessageType(MessageType.Request);req.setHeartbeat(false);req.setOneway(false);req.setCompressType(CompressType.None);req.setSerializeType(SerializeType.SerializeNone);req.setSeq(123);req.metadata.put("test","1234");req.payload ="world".getBytes("UTF-8");NettyClientclient =newNettyClient(null);Messageres =client.call("192.168.31.82:8997",req);System.out.println(newString(res.payload)); }
- 支持和spring-boot的集成
- 支持服务发现和注册
- 支持扩展(client 和 server都可扩展)
- 支持多语言调用
- 支持qps限流
- 支持accesslog记录
- 支持泛化调用
- 支持同步 异步 oneway调用
- 支持token调用
- 支持client端重试
- 支持调用数据采集
- 支持结果缓存
- 支持热更新
- 支持http gateway访问模式
- 调用失败支持(FailFast Failover Failtry)
- 支持select模式(RandomSelect RoundRobin WeightedRoundRobin SelectByUser)
- 支持优雅关机
- 支持服务治理(通过rpcx-ui)
- 支持服务分组