egg-rpc4js
依赖说明
依赖的 egg 版本
egg-rpc4js 版本 | egg 1.x |
---|---|
1.x | 😁 |
0.x | ❌ |
依赖的插件
安装插件
$ npm i egg-rpc4js或者$ yarn add egg-rpc4js
开启插件
// config/plugin.jsexportsrpc4js = enable: true package: 'egg-rpc4js';
使用场景
- Why and What: 微服务架构一个主要的问题就是服务间通讯,传统的HttpClient方式性能低、过程复杂,因而采用sofarpc的node版本替代传统方案,sofarpc实现了服务注册、发现、负载均衡、故障熔断等功能,本项目作为sofa-rpc-node的 egg 插件版本,帮助开发者更快的集成rpc功能。
- How: 本插件依赖 zookeeper 作为注册中心,应先在本地或服务器上部署 zookeeper,默认启动端口为
2181
。
详细配置
exportsrpc4js = registry: address: '127.0.0.1:2181' // zookeeper地址 根据实际情况配置 client: services: namespace: 'account' // 服务命名空间 modules: 'wallet' 'security' // 选择消费该服务下的模块功能 responseTimeout: 3000 // 响应超时(单位:ms) server: namespace: 'market' // 服务命名空间 port: 12200 // 监听端口
接口实现
rpc应用目录结构:
egg-example├── app│ ├── controller // 普通接口实现目录│ │ └── homejs| ├── rpc // RPC接口实现目录| | └── m1js| | └── m2js│ └── routerjs├── config│ └── configdefaultjs└── packagejson
实现类:
// ${baseDir}/app/rpc/handler.js'use strict'; { thisapp = app; thisctx = ctx; } async { // ... } // ... moduleexports = Handler;
调用RPC服务
// ...await ctxrpcnamespacemodule;// 或者await apprpcnamespacemodule;/** * 说明 * namespace 为服务命名空间 * module 为该服务提供的rpc模块 * interfaceName 为该模块的接口 * * 请在使用中根据实际情况进行替换 * /
单元测试
提问交流
请到 egg-rpc4js issues 异步交流。