zoodubbo
A Javascript module for Node.js to connect Dubbo service by node-zookeeper-client.
Features
- Invoke Dubbo service as a Customer.
- Use Zookeeper as the Dubbo Registration Center.
- Only supports the use of the default hessian2 protocol for serialization and deserialization.
- It is not very friendly to support the return value containing an enum type.
- Use Random LoadBalance to choose Provider.
- Use generic-pool to manage net.Socket.
Installation
You can install it using npm:
$ npm install zoodubbo
Example
var ZD = ;var zd = // config the addresses of zookeeper conn: 'localhost:2181'; // connect to zookeeperzd; // get a invoker with a service pathvar invoker = zd; // excute a method with parametersvar method = 'getUserByID';var arg1=$class:'int'$:123;invoker;
Documentation
new ZD(conf)
Arguments
-
conf {String|Object} - A string of host:port pairs like
conn
. Or an object to set the instance options. Currently available options are:dubbo
{String} - Dubbo version information.
The following content could reference: https://github.com/alexguan/node-zookeeper-client#client-createclientconnectionstring-options
conn
{String} - Just like connectionString of node-zookeeper-client. Comma separated host:port pairs, each represents a ZooKeeper server.sessionTimeout
{Number} - Session timeout in milliseconds, defaults to 30 seconds.spinDelay
{Number} - The delay (in milliseconds) between each connection attempts.retries
{Number} - The number of retry attempts for connection loss exception.
Example
// use a string of host:port pairsvar zd = 'localhost:2181,localhost:2182'; // use an object to set the instance optionsvar zd = conn: 'localhost:2181,localhost:2182' dubbo: '2.5.3';
client
The client instance created by node-zookeeper-client. To listen event such as follows:
zdclient;
The list of events could reference: https://github.com/alexguan/node-zookeeper-client#state
void connect()
Connect to the Dubbo Registration Center by node-zookeeper-client. Equivalent to the following code:
zd;// just likezdclient;
void close()
Close the connection of node-zookeeper-client. Equivalent to the following code:
zd;// just likezdclient;
Invoker getInvoker(path[, opt])
Arguments
-
path {String} - Path of service.
-
opt {Object} - An object to set the Invoker options. Currently available options are:
version
{String} - Service version information.timeout
{Number} - The timeout (in milliseconds) to excute.
The following content could reference: generic-pool
poolMax
{Number} - Maximum number of net.Socket to create from pool at any given time. Defaults to 1 .poolMin
{Number} - Minimum number of net.Socket to keep in pool at any given time. If this is set >= poolMax, the pool will silently set the min to equal max. Defaults to 0 .
Example
var invoker = zd;
new Invoker(zk[, opt])
Also you can create Invoker instance by URIs of providers directly.
Arguments
-
zk {Client|String|Array} - The ZD instance or the URIs of providers.
-
opt {Object} - An object to set the instance options. Currently available options are:
path
{String} - Path of service.dubbo
{String} - Dubbo version information.
The other content is same as the
opt
in getInvoker(path[, opt])
Example
var invoker = 'dubbo://127.0.0.1:20880/com.demo.DemoService?interface=com.demo.DemoService&methods=sayHello' version: '0.0.0' ;
void excute(method, args[, cb])
Arguments
- method {String} - Method to excute.
- args {Array} - Argument list.
- cb(err, data) {Function} - The data is the returned value. When the cb is undefined, the function return a Promise instance.
Example
var method = 'getUserByID';var arg1=$class:'int'$:123; // use callbackinvoker; // or return a Promise instanceinvoker ;
License
Licensed under the MIT license.