zmq-soa
implement distributed zmq SOA broker , worker , requester
Usage
npm install zmq-soa
Broker
Start broker
Broker is used for setting
soa = require('zmq-soa');
var port = 8888
var broker = new soa.Broker('tcp://*:'+port, {});
Detect client connect event
broker.on('connect', function(client) {
console.log('connect')
})
Detect client disconnect event
broker.on('disconnect', function(client) {
console.log('connect')
})
Worker and client
Start to connect
var port = 8888
worker = new soa.Client('localhost', port,
{
service: 'serviceName'
}
,
function(data, cb) {
console.log('get test message'+data);
return cb(data);
}
);
client = new soa.Client('localhost', 8888);
Connected Event
worker.on('connect', function() {
console.log('woker connected');
});
##Authenticate
worker auth
worker.on('ready', function() {
worker.Authenticate('123');
});
worker.on('authenticate', function(result) {
if(result)
console.log('auth success')
else
console.log('auth failed')
});
broker auth event
####broker.on('auth', function(envelope, data, cb))
broker.on('auth', function(envelope, data, cb) {
if (data.auth && data.auth === 'password') {
if (cb) {
if (data.service) {
return cb(true, envelope, data.service, data);
} else {
return cb(true, envelope, data);
}
}
} else {
return cb(false, envelope);
}
});
Client
client = new soa.Client('localhost', port);
client.send('test2', new Buffer('message'), function(err, data) {})
Worker send for other service
worker = new soa.Client('localhost', port,
{
service: 'serviceName'
}
,
//worker response function
function(data, cb) {
console.log('get test message'+data);
worker.send('service2',function(data){
return cb(data);
})
}
);
Broker service
Broker service provide client and worker to get message from broker directly.
####broker.on('service',function(msg,client-envelop,[callback])
broker.on('service', function(msg, envelope, cb) {
console.log(msg.data.toString())
cb(
});
####client.sendBService(data,[callback],[timeout])
client.sendBService(new Buffer("{'data':'123'}"));
client.sendBService(new Buffer("{'data':'123'}")
,
function(error,data){
console.log(data.toString())
}
,10
);
License
MIT