Skip to content

dazejs/dubbo-provider

Repository files navigation

GitHub issues npm npm actions codecov GitHub license

Dubbo

基于 Daze.js 的 Dubbo 服务扩展

简介

这是一套基于 Daze.js 的 Dubbo 的扩展,提供了服务端和客户端的一整套解决方案。

开始

安装

$ npm install --save @dazejs/dubbo-provider

加载服务提供者

添加 DubboServiceProvidersrc/config/app.ts 配置中

import { DubboServiceProvider } from '@dazejs/dubbo-provider';

export default {
  // ...
  providers: [
    // ...
    DubboServiceProvider
  ]
  // ...
}

添加/修改配置中心设置

src/config/ 目录下创建 dubbo.ts 配置文件:

export default {
  default: {
    type: 'zookeeper',
    host: '127.0.0.1:2181',
  }
}

自定义服务器IP地址(默认自动获取,某些情况下自动获取的IP地址可能不正确), 在刚才的配置文件中新增属性:

export default {
  // ...
  ip: '100.100.100.100'
  //...
}

也可以使用 @dubbo.ip('100.100.100.100') 来为每个消费者或者提供者单独设置(优先级大于全局)

使用

服务端 (Provider)

定义提供者
import { DubboProvider, dubbo } from '@dazejs/dubbo-provider';

@dubbo.registry('default')
@dubbo.interface('com.daze.dubbo.service.Demo')
@dubbo.ip('100.100.100.100') // 自定义 ip 地址,一般情况下无需使用,自动获取即可
export default class extends DubboProvider {
  @dubbo.method()
  sayHello(name: string) {
    return `Hello ${name}`;
  }
}

客户端 (Consumer)

定义消费者
import { DubboConsumer, dubbo } from '@dazejs/dubbo-provider';

@dubbo.registry('default')
@dubbo.interface('com.daze.dubbo.service.Demo')
export default class extends DubboConsumer {
}
注入并使用
import { Controller, http, inject } from '@dazejs/framework';
import { java } from '@dazejs/dubbo-provider';
import DemoConsumer from '../dubbo/consumers/demo';

export default class extends Controller {

  @inject(DemoConsumer) demoConsumer: DemoConsumer;

  @http.get()
  async index() {
    const res = await this.demoConsumer.invoke('sayHello', [java.String('dazejs')]);
    return res;
  }
}

About

Dubbo support for dazejs 🚀🎯

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published