Skip to content

🌏 NodeJS communicate with dubbo and services generator CLI

License

Notifications You must be signed in to change notification settings

thundernet8/dubbo-node

Repository files navigation

dubbo-node-zookeeper

Build Status FOSSA Status

NodeJS 与 dubbo RPC 通信 , zookeeper 协同,提供了 CLI 从 Java Interface 一键生成 services 并引用。

内部使用了 Socket 连接池重用连接,以提高性能。

Install

npm install dubbo-node-zookeeper -g

yarn global add dubbo-node-zookeeper

Usage

CLI 生成 services

从 java 文件生成

dubbo2ts -i DemoService.java -o services -g dubbo -r LATEST -t 6000

或者从包含 java 文件的文件夹生成

dubbo2ts -i src -o services -g dubbo -r LATEST -t 6000

use dubbo2ts -h for more details.

生成示例 - DemoService.ts(CLI generated)

import Dubbo from 'dubbo-node-zookeeper';

export const ServiceHead = {
    interfac: 'com.alibaba.dubbo.demo.DemoService',
    version: 'LATEST',
    timeout: 6000,
    group: 'dubbo',
    methods: {
        sayHello: name => [{ $class: 'java.lang.String', $: name }],
        sayHello2: req => [{ $class: 'com.alibaba.dubbo.demo.DemoReq', $: req }]
    }
};

export function sayHello(name: string) {
    return Dubbo.exec<string>('DemoService.sayHello', name);
}

export function sayHello2(req: any) {
    return Dubbo.exec<string>('DemoService.sayHello2', req);
}

export default {
    sayHello,
    sayHello2
};

生成示例 - index.ts( 引入所有的 Services)(CLI generated)

import { ServiceHead as DemoService } from './DemoService';

export default {
    DemoService
};

使用 services

import Dubbo from 'dubbo-node-zookeeper';
import services from './services';
import { sayHello } from './services/DemoService';
import express from 'express';

new Dubbo({
    application: { name: 'demo-provider' },
    register: '127.0.0.1:2181',
    dubboVer: '2.5.7',
    root: 'dubbo',
    services
});

setInterval(function() {
    sayHello('Jack')
        .then(data => console.log(data))
        .catch(err => console.log(err));
}, 5000);

//或者中转http请求至RPC
const app = express();
app.get('/hello', (req, res) => {
    sayHello('Jack')
        .then(data => res.send(data))
        .catch(err => res.send(err));
});

Demo

查看Demo工程

License

Dubbo-node-zookeeper is freely distributable under the terms of the MIT license.

FOSSA Status

About

🌏 NodeJS communicate with dubbo and services generator CLI

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published