# rpcx_java_examples **Repository Path**: walter80/rpcx_java_examples ## Basic Information - **Project Name**: rpcx_java_examples - **Description**: rpcx java教程 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## rpcx-java ~  /Users/wolingzong/soft/zookeeper/apache-zookeeper-3.5.6-bin/bin/zkServer.sh start com.colobu.rpcx.demo.server.java com.colobu.rpcx.demo.client.java com.colobu.rpcx.client.NettyClientTest.testSendMsgRpcx 已存在的文件夹或 Git 仓库 cd existing_folder git init git remote add origin git@gitee.com:walter80/rpcx_java_examples.git git add . git commit git push -u origin master git remote rm origin **Unmaintained**: 目前没有资源维护这个项目。欢迎有时间的开发者接手。 ### example assume you have started a Go rpcx server: ```go package main import ( "context" "flag" "github.com/smallnest/rpcx/server" ) var ( addr = flag.String("addr", "192.168.31.82:8997", "server address") ) type Echo int func (t *Echo) Echo(ctx context.Context, args []byte, reply *[]byte) error { *reply = []byte("hello" + string(args)) return nil } func main() { flag.Parse() s := server.NewServer() s.RegisterName("echo", new(Echo), "") s.Serve("tcp", *addr) } ``` You can run it as: ```sh go run main.go ``` Then you can write the java client: ```java @Test public void testSendMsg() throws Exception { Message req = new Message("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"); NettyClient client = new NettyClient(null); Message res = client.call("192.168.31.82:8997", req); System.out.println(new String(res.payload)); } ``` ## 借鉴项目 - dubbo - rocketmq ## feature - 支持和spring-boot的集成 - 支持服务发现和注册 - 支持扩展(client 和 server都可扩展) - 支持多语言调用 - 支持qps限流 - 支持accesslog记录 - 支持泛化调用 - 支持同步 异步 oneway调用 - 支持token调用 - 支持client端重试 - 支持调用数据采集 - 支持结果缓存 - 支持热更新 - 支持http gateway访问模式 - 调用失败支持(FailFast Failover Failtry) - 支持select模式(RandomSelect RoundRobin WeightedRoundRobin SelectByUser) - 支持优雅关机 - 支持服务治理(通过rpcx-ui) - 支持服务分组