No Proscribed Meaning

    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

    4

    Version

    1.0.23

    License

    MIT

    Last publish

    Collaborators

    • d925529