commit | 1f87fb39df079a7e13801ba44b3813d449e3a54c | [log] [tgz] |
---|---|---|
author | Huxing Zhang <huxing.zhang@gmail.com> | Fri Jul 19 14:57:51 2019 +0800 |
committer | GitHub <noreply@github.com> | Fri Jul 19 14:57:51 2019 +0800 |
tree | e226dfb26924b972620f5125a88a32ac94aa3516 | |
parent | 3bf30c67f581d2035ab0a7bb4ffedca90d5c2816 [diff] | |
parent | f08c74689a9451a175004182ab94276ccc7bb508 [diff] |
Merge pull request #125 from wushanchao/patch-1 dubbo.subcribe -> dubbo.subscribe
Dubbo-js, using Node.js to embrace the Dubbo ecosystem. See this Demo to find how intelligent this project is.
yarn add dubbo2.js
Below code snippet shows how to work with the typescript type definitions which automatically translated from Java interfaces.
// ===================== service.ts ================== // generated by interpret tools import {BasicTypeProvider} from './providers/com/alibaba/dubbo/demo/BasicTypeProvider'; import {DemoProvider} from './providers/com/alibaba/dubbo/demo/DemoProvider'; import {ErrorProvider} from './providers/com/alibaba/dubbo/demo/ErrorProvider'; export default { BasicTypeProvider, DemoProvider, ErrorProvider, }; // =============== dubbo.ts ======================== import {Dubbo} from 'dubbo2.js'; import service from './service'; // create dubbo object const dubbo = new Dubbo<typeof service>({ application: {name: 'node-dubbo'}, // zookeeper address register: 'localhost:2181', service, }); // main method (async () => { let {res, err} = await dubbo.service.DemoProvider.sayHello('node'); // print {err: null, res:'hello node from dubbo service'} ({res, err} = await dubbo.service.DemoProvider.echo()); // print {err: null, res: 'pang'} ({res, err} = await dubbo.service.DemoProvider.getUserInfo()); // print {status: 'ok', info: { id: '1', name: 'test' }, err: null} })();
The automatically translated typescript type definitions are not necessary, below code snippet demonstrates how to use dubbo-js without them.
// create the service to be injected import {Dubbo} from 'dubbo2.js'; const demoProvider = dubbo => dubbo.proxyService({ dubboInterface: 'com.alibaba.dubbo.demo.DemoProvider', 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', }), ]; }, }, }); // integrate the service in demoProvider with dubbo object constructor const service = { demoProvider, }; const dubbo = new Dubbo<typeof service>({ // ....other parameters service, });
If you‘d like to contribute, it’s a good start to follow below commands to get a locally runnable project.
# start zookeeper cluster docker-compose up # start java cd java/dubbo-demo mvn clean install cd java/dubbo-demo/dubbo-demo-provider mvn clean package java -jar target/dubbo-demo-provider-2.6.3-jar-with-dependencies.jar # build make # start node cd example/hello-koa npm run debug:start # test /hello curl http://localhost:3000/hello
Please follow the template for reporting any issues.
Dubbo-js will not work without:
Many thanks to their authors fengmk2 and dead-horse.
Apache Dubbo is under the Apache 2.0 license. See the LICENSE file for details.