dubbo
nodejs 使用原生的 dubbo 协议打通了 dubbo 的 rpc 方法调用 .
Getting Started
yarn add dubbo-js
How to Usage?
import {Dubbo, java, TDubboCallResult} from 'dubbo';
interface IDemoService {
sayHello(name: string): TDubboCallResult<string>;
echo(): TDubboCallResult<string>;
test(): TDubboCallResult<void>;
getUserInfo(): TDubboCallResult<{
status: string;
info: {id: number; name: string};
}>;
}
const dubbo = new Dubbo({
application: {name: 'dubbo-js'},
register: 'localhost:2181',
dubboVersion: '2.0.0',
interfaces: ['org.apache.dubbo.demo.DemoService'],
});
const demoService = dubbo.proxyService<IDemoService>({
dubboInterface: 'org.apache.dubbo.demo.DemoService',
version: '1.0.0',
methods: {
sayHello(name) {
return [java.String(name)];
},
echo() {},
test() {},
getUserInfo() {
return [
java.combine('com.alibaba.dubbo.demo.UserRequest', {
id: 1,
name: 'nodejs',
email: 'node@qianmi.com',
}),
];
},
},
});
const result1 = await demoService.sayHello('node');
const res = await demoService.echo();
const res = await demoService.getUserInfo();
as developer
brew install zookeeper
brew services start zookeeper
yarn run test
DEBUG=dubbo*
API
创建 Dubbo 对象
const dubbo = new Dubbo({
dubboVersion
application
enableHeartBeat
dubboInvokeTimeout
dubboSocketPool
logger
register
zkRoot
interfaces
});
const dubbo = Dubbo.from({
dubboVersion
application
enableHeartBeat
dubboInvokeTimeout
dubboSocketPool
logger
register
zkRoot
interfaces
})
const demoSerivce = Dubbo.proxService({
dubboInterface: 'com.alibaba.dubbo.demo.DemoService',
version: '1.0.0',
methods: {
xx(params) {
return [
params
]
}
},
})
FAQ
import {Dubbo} from 'dubbo-js';
默认导入的 dubbo-js 是按照 es2017 进行编译的,支持 node7.10 以上。
如果更低的 node 版本,可以使用
import {Dubbo} from 'dubbo-js/es6';