{"id":17955730,"url":"https://github.com/smallnest/rpcx-java","last_synced_at":"2025-03-25T02:30:57.325Z","repository":{"id":29715449,"uuid":"122573764","full_name":"smallnest/rpcx-java","owner":"smallnest","description":"rpcx implementation in Java for server side and client side","archived":false,"fork":false,"pushed_at":"2022-12-14T20:44:53.000Z","size":691,"stargazers_count":80,"open_issues_count":6,"forks_count":24,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-19T06:51:27.489Z","etag":null,"topics":["dubbo","microservice","motan","rpc","rpc-client","rpc-framework","rpcx"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smallnest.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-23T04:33:35.000Z","updated_at":"2025-02-15T15:18:35.000Z","dependencies_parsed_at":"2023-01-14T15:45:19.820Z","dependency_job_id":null,"html_url":"https://github.com/smallnest/rpcx-java","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Frpcx-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Frpcx-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Frpcx-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallnest%2Frpcx-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smallnest","download_url":"https://codeload.github.com/smallnest/rpcx-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245385307,"owners_count":20606643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dubbo","microservice","motan","rpc","rpc-client","rpc-framework","rpcx"],"created_at":"2024-10-29T10:31:56.362Z","updated_at":"2025-03-25T02:30:56.809Z","avatar_url":"https://github.com/smallnest.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## rpcx-java\n\n**Unmaintained**: 目前没有资源维护这个项目。欢迎有时间的开发者接手。\n\n### example\nassume you have started a Go rpcx server:\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\n\t\"github.com/smallnest/rpcx/server\"\n)\n\nvar (\n\taddr = flag.String(\"addr\", \"192.168.31.82:8997\", \"server address\")\n)\n\ntype Echo int\n\nfunc (t *Echo) Echo(ctx context.Context, args []byte, reply *[]byte) error {\n\t*reply = []byte(\"hello\" + string(args))\n\treturn nil\n}\n\nfunc main() {\n\tflag.Parse()\n\n\ts := server.NewServer()\n\ts.RegisterName(\"echo\", new(Echo), \"\")\n\ts.Serve(\"tcp\", *addr)\n}\n\n```\n\nYou can run it as:\n```sh\ngo run main.go\n```\n\nThen you can write the java client:\n\n```java\n    @Test\n        public void testSendMsg() throws Exception {\n            Message req = new Message(\"Echo\", \"Echo\");\n            req.setVersion((byte) 0);\n            req.setMessageType(MessageType.Request);\n            req.setHeartbeat(false);\n            req.setOneway(false);\n            req.setCompressType(CompressType.None);\n            req.setSerializeType(SerializeType.SerializeNone);\n            req.setSeq(123);\n            req.metadata.put(\"test\", \"1234\");\n            req.payload = \"world\".getBytes(\"UTF-8\");\n\n            NettyClient client = new NettyClient(null);\n            Message res = client.call(\"192.168.31.82:8997\", req);\n            System.out.println(new String(res.payload));\n        }\n```\n\n\n## 借鉴项目\n- dubbo\n- rocketmq\n\n## feature\n- 支持和spring-boot的集成\n- 支持服务发现和注册\n- 支持扩展(client 和 server都可扩展)\n- 支持多语言调用\n- 支持qps限流\n- 支持accesslog记录\n- 支持泛化调用\n- 支持同步 异步 oneway调用\n- 支持token调用\n- 支持client端重试\n- 支持调用数据采集\n- 支持结果缓存\n- 支持热更新\n- 支持http gateway访问模式\n- 调用失败支持(FailFast Failover Failtry)\n- 支持select模式(RandomSelect RoundRobin WeightedRoundRobin SelectByUser)\n- 支持优雅关机\n- 支持服务治理(通过rpcx-ui)\n- 支持服务分组\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallnest%2Frpcx-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmallnest%2Frpcx-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallnest%2Frpcx-java/lists"}