dubbo
node.js dubbo/dubbox client with zookeeper support via dubbo default hessian protocol.
想到这个项目基本上只给国人用,就破例稍微接地气一点,下面都写中文文档
- TCP 长连接及长连接池
- 动态的服务注册
- 内部使用队列处理 Service 注册的握手过程,调用者无需关心
Install
$ npm install dubbo --save
Usage
const dubbo = application: 'my-application-name' // Dubbo 父节点名 root: 'dubbo-test' // Dubbo 的版本 version: '2.8.4' zookeeper: host : '10.0.0.100:2181' // node-zookeeper-client 的 createClient 方法的 options, sessionTimeout: 30000 spinDelay : 1000 retries : 5 // 需要注册的服务名,还可以使用 `dubbo.register` 方法来动态注册一个服务 services: member: interface: 'me.kael.service.memberService' timeout: 6000 group version // 1. Object // 对于每一个 service,长连接池的大小 // 这些参数会被直接传递给 generic-pool // 2. false // 若不希望使用连接池,则传递 false pool: max: 200 min: 10 maxWaitingClients: 500 // 如果一个服务没有注册就被调用,那么会收到一个 Promise.rejectdubbo // `'login'` 为方法名// invoke 方法可以接多个参数 // 动态注册一个服务dubbo
new Dubbo(options)
创建一个 Dubbo
实例
options Object
- application
String
当前应用的名称 - root
String
dubbo 的父节点名 - version
String
连接的 dubbo 服务使用的 dubbo 版本 - zookeeper
Object
- host
String
zookeeper 的地址,格式为<ip>[:<port>]
,若端口没有定义,则默认端口为2181
- 其他
node-zookeeper-client
的参数,会直接传递
- host
- services
Object.<name:ServiceOptions>
需要预先注册的 services - pool
Object|false
连接池的 options,它会直接作为参数传递给generic-pool
ServiceOptions Object
- interface
- timeout
- group
- version
dubbo.register(name, serviceOptions)
注册一个 dubbo service,一个被注册过的 service,可以立即调用它的 service.invoke()
方法,dubbo
与 service 进行 providers 和 consumers 的握手的过程,会被 service 内部的队列处理好。
- name
String
- serviceOptions
ServiceOptions
Returns this
dubbo.service(name)
获取一个 service,即使一个名为 name
的 service,没有被注册过,该方法也会返回一个 Service
实例。
但是若一个 service 没有被注册过,那么在调动 service.invoke()
方法的时候,会得到一个 Promise.reject()
Returns Service
// 若 `member` service 没有注册,仍然能够获取一个 member 实例const member = dubbo member // 然后,我们若注册了 member 这个 servicedubbo // 就可以使用这个 service 了member
service.invoke(methodName, ...args)
请求一个 service 方法。
- methodName
String
service 中的方法名,若该方法名不存在,则会得到一个Promise.reject
- args
any
方法的参数,可传递多个,这里的方法,需要是 java 风格的对象。可以手动拼,或者使用js-to-java
module.
service
Returns Promise
License
MIT