微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dubbo2.js 基于 Node.js 的 RPC 客户端

程序名称:dubbo2.js

授权协议: Apache-2.0

操作系统: 跨平台

开发语言: Java

dubbo2.js 介绍

dubbo2.js —— nodejs 使用原生的 dubbo (dubbo head + hessian body) 协议打通了 dubbo 的 rpc
方法调用

功能特性

  • 支持将 zookeeper 作为注册中心

  • 使用 TCP dubbo 原生协议(dubbo Header + Hessian Body)

  • Socket 池 (ServerAgent -> SocketPool -> SocketWorker)

  • 直接支持 dubbo (const dubbo = Directlydubbo({..}))

  • 中间件,易于扩展

  • 追踪

  • 支持 dubBox

示例代码

import {dubbo, java, TdubboCallResult} from 'dubbo2.js';
//定义dubbo方法类型接口
//方便代码自动提示
interface IDemoService {
  sayHello(name: string): TdubboCallResult<string>;
  echo(): TdubboCallResult<string>;
  test(): TdubboCallResult<void>;
  getUserInfo(): TdubboCallResult<{
    status: string;
    info: {id: number; name: string};
  }>;
}
//创建dubbo对象
const dubbo = new dubbo({
  application: {name: 'node-dubbo'},
  //zookeeper address
  register: 'localhost:2181',
  dubboVersion: '2.0.0',
  interfaces: ['com.alibaba.dubbo.demo.DemoService'],
});
//代理本地对象->dubbo对象
const demoService = dubbo.proxyService<IDemoService>({
  dubboInterface: 'com.alibaba.dubbo.demo.DemoService',
  version: '1.0.0',
  methods: {
    sayHello(name) {
      //仅仅做参数hessian化转换
      return [java.String(name)];
    },
    echo() {},
    test() {},
    getUserInfo() {
      //仅仅做参数hessian化转换
      return [
        java.combine('com.alibaba.dubbo.demo.UserRequest', {
          id: 1,
          name: 'nodejs',
          email: '[email protected]',
        }),
      ];
    },
  },
});
//main method
(async () => {
  const result1 = await demoService.sayHello('node');
  //print {err: null, res:'hello node from dubbo service'}
  const res = await demoService.echo();
  //print {err: null, res: 'pang'}
  const res = await demoService.getUserInfo();
  //status: 'ok', info: { id: '1', name: 'test' }
})();

dubbo2.js 官网

http://dubbo.io/dubbo2.js/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐