nodejs 通过原生 dubbo 协议获取服务

2016-03-04 13:05:43 +08:00
 p412726700

这个项目主要是针对使用 dubbo 服务的团体或者个人

原生 dubbo 框架可以输出 json 数据供消费者调用,但是假如囿于历史原因 dubbo 不是通过 json 提供数据的,那就只能用原生协议了。之前网上大部分用 node 调取 dubbo 服务都是用 json 格式的库。

所以,封装了一个通过原生协议调取 dubbo 服务, dubbo 文档中有写到,数据使用 hessian 序列化和反序列化的,只要能通过 nodejs 模拟 hessian 的序列化方式就成功了一大半,在 node 可以直接使用 hessian.js 完成这个工作,剩下的就是实现 dubbo 协议的消息封装。

node-zookeeper-dubbo

config

env

envirmoment

conn

zookeeper conn url

path

the service you need

version

dubbo version

Example

var Service=require('node-zookeeper-dubbo');

var opt={
  env:'test',
  conn:'127.0.0.1:2180',
  path:'com.customer.Service'
}

var method="getUserByID";
var arg1={$class:'int',$:123}
var args=[arg1];

var service = new Service(opt);
service.excute(method,args,function(err,data){
  if(err){
    console.log(err);
    return;
  }
  console.log(data)
})

or

service
  .excute(method,args)
  .then(function(data){
    console.log(data);
  })
  .catch(function(err) {
    console.log(err);
  })

you can use js-to-java
javascript
var arg1={$class:'int',$:123};
//equivalent
var arg1=java('int',123);

Close zookeeper connection

Default the zookeeper connection is keep-alive,you can call service.zoo.close() to close the connect;

5278 次点击
所在节点    iDev
1 条回复
xi_lin
2016-03-06 14:45:37 +08:00
发错节点了吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX