Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

dubbo-client-zookeeper-hessian

1.0.23 • Public • Published

特性

  1. 通过hessian协议调用dubbo服务,同时使用zookeeper client来订阅服务通知,注冊消費者
  2. 通过读取java.class来初始化接口、方法、实体类,调用java服务时,自动修正方法参数类型和类的属性。
  3. 使用Promise模式
  4. zookeeper发生变化时,自动通知客户端并触发对应的事件

安装

npm install dubbo-client-zookeeper-hessian --save

使用前提

  1. 安装JDK,配置环境变量,确保javap命令正常使用;
  2. 在项目根目录创建文件夹 : interface,将希望调用的java 接口class复制到 interface/service 目录,将涉及到的实体类class复制到 interface/domain

如何试用

初始化

 
 let dubbo = require('dubbo-client-zookeeper-hessian');
 /**      初始化参数是json对象,key的含义如下:
   *      name(app标识),
   *      zk(注册中心地址 ip:port
   *      host 本机IP
   *      connectTimeout 连接超时时间,
   *      retries 错误重试次数
   *      dubbo_version(展示到注册中心的消费者dubbo版本,默认2.8.4),
   *      service_version(服务版本,默认为任意版本,不为空时在ZK中心只获取指定版本的服务),
   *      service_group = '_service'(服务分组,默认dubbo,这也是dubbo服务端在不指定分组时的默认分组)
   *      strictString = true(是否过滤所有提交字符串中的script/frame等)
   *      host(固定调用的服务器地址ip,不传表示调用任意地址,例如 10.0.0.1表示只调用10.0.0.1上的服务)
   *      username zk用户名
   *      password zk密码
   *      data 数据处理方法,如果不传则将服务端返回的数据原生不动返回,该方法将接收一个参数,即服务器返回的数据;允许直接throw异常
   */
 dubbo.one(参数);
 

调用java方法

    //ApplicationService=接口名称,getList=方法名称
    dubbo.service.ApplicationService.getList(1,10).then(data => {
        //接收到的数据
    }).catch(error => {
        //触发的异常
    })

参数自动修正

hessian协议要求方法的参数必须一致,例如参数定义为int,如果传字符串肯定报错,本工具可以自动修正类型以防错误

    //自动将 '1' 修正 为 1
    dubbo.service.ApplicationService.getList('1',10).then(data => {
        //接收到的数据
    }).catch(error => {
        //触发的异常
    })
 
    //自动将 '1' 修正 为 1
    dubbo.service.PriceService.insert({
        price : '20', //如果定义的实体类属性为int,则自动修正为int,如果定义的类型为Float或者BigDecimal,则自动修正为对应的类型
        name : '第一个价格'
    }).then(data => {
        //接收到的数据
    }).catch(error => {
        //触发的异常
    })

读取数据

  1. Float和BigDecimal从java传过来后,数据变为 {value : 数字}
  2. java的Map将转换为js的Map,不能直接对象.属性,而是对象.get('属性')

新建一个实体类

可以通过dubbo.domain.对象名() 得到一个空的对象,对象的属性都是默认值,例如字符串=一个空的字符串,数字=0

事件调用

let dubbo = require('dubbo-client-zookeeper-hessian');
dubbo.on('事件名',() => {
 
});

事件列表

名称 含义 参数
all 接口全部读取完毕同时都已订阅zookeeper时触发
接口名称(仅类名) 该接口class读取完毕并订阅zookeeper时触发(如果class文件发生变化、zookeeper节点发生变化时也会触发) 该接口的服务器host列表
node 已订阅zookeeper上所有接口时触发
node-接口名称(仅类名) 订阅该接口的zookeeper时触发(zookeeper节点发生变化时也会触发) 该接口的服务器host列表
data 接收到服务器数据时触发 json对象,key包含host(服务器地址),className(接口名),methodName(方法名),param(参数),time(耗时),data(数据)
error 发生异常时触发 json对象,key包含host(服务器地址),className(接口名),methodName(方法名),param(参数),time(耗时),error(错误)

错误信息

错误信息都是一个json对象,key的含义: state=错误编码和message=错误消息 内置的错误码: 101006 参数不符 101002 找不到节点 101005 连接失败 101004 服务端异常

Install

npm i dubbo-client-zookeeper-hessian

DownloadsWeekly Downloads

25

Version

1.0.23

License

MIT

Last publish

Collaborators

  • avatar