commit | 2c3c356af9b5e18ab31acef27c27ccd4f1b32b29 | [log] [tgz] |
---|---|---|
author | 胡锋 <fengmi99@gmail.com> | Tue Apr 12 20:17:53 2022 +0800 |
committer | GitHub <noreply@github.com> | Tue Apr 12 20:17:53 2022 +0800 |
tree | eb412aa80fda97b5d616ef776f52f25a4af9529a | |
parent | 6cadbc68212686596409bb954e5f32ff382e79ff [diff] |
Update README.md add document link
Dubbo-js, using Node.js to embrace the Dubbo ecosystem. See this Demo to find how intelligent this project is.
yarn add apache-dubbo-consumer
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/org/apache/dubbo/demo/BasicTypeProvider' import { DemoProvider } from './providers/org/apache/dubbo/demo/DemoProvider' import { ErrorProvider } from './providers/org/apache/dubbo/demo/ErrorProvider' export default { BasicTypeProvider, DemoProvider, ErrorProvider } // =============== dubbo.ts ======================== import { Dubbo, s } from 'apache-dubbo-consumer' import service from './service' // dubbo interface setting const dubboSetting = s.Setting( s.service( [ 'org.apache.dubbo.demo.DemoProvider', 'org.apache.dubbo.demo.ErrorProvider' ], { version: '1.0.0' } ), s.service('org.apache.dubbo.demo.BasicTypeProvider', { version: '2.0.0' }) ) // create dubbo object const dubbo = new Dubbo<typeof service>({ application: { name: 'dubbo-js' }, // zookeeper address register: 'localhost:2181', dubboSetting, 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 'apache-dubbo-consumer' const demoProvider = (dubbo) => dubbo.proxyService({ dubboInterface: 'org.apache.dubbo.demo.DemoProvider', version: '1.0.0', methods: { sayHello(name) { return [java.String(name)] }, echo() {}, test() {}, getUserInfo() { return [ java.combine('org.apache.dubbo.demo.UserRequest', { id: 1, name: 'nodejs', email: 'node@test.com' }) ] } } }) // integrate the service in demoProvider with dubbo object constructor const service = { demoProvider } const dubbo = new Dubbo<typeof service>({ // ....other parameters service })
Make sure java, maven, docker, Node, Yarn is installed locally. If you‘d like to contribute, it’s a good start to follow below commands to get a locally runnable project.
# cd root dir cd dubbo-js # start java dubbo service chmod 755 ./start_dubbo_service.sh sh ./start_dubbo_service.sh # build package module make # start node cd example/hello-koa # install node modules yarn # start web yarn run debug:start # test /hello curl http://localhost:3000/hello # or hello-egg example cd example/hello-egg yarn yarn run dev # test /hello http://127.0.0.1:7001/hello
cd dubbo-js sh ./start_dubbo_service.sh yarn make yarn run test
git clone https://github.com/apache/dubbo-js.git cd dubbo-js npm install -g lerna lerna bootstrap make build-dubbo
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.