egg-dubbo
egg.js dubbo service proxy middleware
Last updated 10 months ago by jamesliauw .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install egg-dubbo 
SYNC missed versions from official npm registry.

egg-dubbo

NPM version build status Test coverage David deps Known Vulnerabilities

Egg连接Dubbo服务插件

Install

$ npm i egg-dubbo --save

Usage

// {app_root}/config/plugin.js
exports.eggDubbo = {
  enable: true,
  package: 'egg-dubbo',
};

Configuration

// {app_root}/config/config.default.js
exports.dubbo = {
  // 默认服务版本
  version: '2.0.0',
  // 默认超时时间
  timeout: 6000,
  // 服务列表
  list: {
      // 多服务配置, 例如goods表示商品系统应用的服务
      goods: {
          applicationName: 'your_application_ame',
          register: 'your_zk_service',
          dubboVer: '2.5.3'
      }
  }
};

see config/config.default.js for more detail.

Example

1.存放服务文件于app/service/rpc目录

Service Preview Gif 1

2.每个服务文件格式,以GoodsRpcService.js为例:

'use strict';

module.exports = (app) => {

  /**
   * 商品RPC服务
   */
  class GoodsRpcService extends app.RpcService {
    constructor() {
      super(app);
      this.channel = 'goods'; // 自定义频道列表
      this.interfaceUrl = 'com.xxx.product.goods.rpc.goods.service.RpcGoodsService'; // JAVA服务类
    }

    // ========= 业务签名 ========
    /**
     * 注册方法签名
     */
    signature() {
      this.methodSignature = {

        // 依据商品ID获取商品信息
        getSimpleGoods: (goodsId) => [{
          '$class': 'java.lang.Long',
          '$': goodsId
        }],

        // 依据商品对像查询商品关联列表
        selectByPage: (good) => [
          {
            $class: 'com.xxx.product.goods.rpc.goods.query.RpcGoodsInfoQuery',
            $: {
                cid: { $class: 'java.lang.Long', $: good.cid },
                pageNo: { $class: 'java.lang.Integer', $: good.pageNo },
                pageSize: { $class: 'java.lang.Integer', $: good.pageSize }
            }
          }
        ]
        
      };
    }
    // ========= 业务签名 ========


    // ======== 业务接口 =========
     /**
     * 简单传参示例
     * @param {*} goodsId 
     */
    * getSimpleGoods(goodsId) {
      const resultData = yield this.request('getSimpleGoods', goodsId);

      return resultData;
    }

    /**
     * 复杂传参示例
     * @param {*} cid 
     * @param {*} pageNo 
     * @param {*} pageSize 
     */
    * selectByPage(cid, pageNo, pageSize) {
        const resultData = yield this.request('selectByPage', {
            cid,
            pageNo,
            pageSize
        });

        return resultData;
    }
    // ======== 业务接口 =========

  }

  // 注册服务
  app.goodsService = new GoodsRpcService(app);
  app.goodsService.update();
  
};

服务调用:

  /**
   * 服务调用示例
   * @param {*} goodsId 
   */
  * getSimpleGoods(goodsId) {
      const resultData = yield this.app.goodsService.getSimpleGoods(goodsId);

      return resultData;
  }

本地Charles调试输出

Invoke Preview Gif 1

Questions & Suggestions

Please open an issue here.

License

MIT

Current Tags

  • 1.0.5                                ...           latest (10 months ago)

3 Versions

  • 1.0.5                                ...           10 months ago
  • 1.0.4                                ...           a year ago
  • 1.0.3                                ...           a year ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 6
Last Day 0
Last Week 3
Last Month 4
Dependencies (13)
Dev Dependencies (12)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |