如何在Node.js应用中调用Dubbo接口

你是一个前端,你做过一个Node.js的后端应用,某天产品找到你让你做一个活动页面,你发现需要数据库保存活动的数据,你不想麻烦后端Java同学,于是你决定使用Node.js来做。
你分析业务逻辑,你建立Model,你生成数据库表,你编写Controller,你实现后台数据查看页面。
你开始编写活动页面调用的接口,你完成了接口,你发现需求里有个参加活动后发短信的功能。
你开始多方询问短信接口,你得到了一个好消息:公司有统一的短信接口可以调用。你得到一个坏消息:只有Dubbo类型的接口。
你陷入了沉思,那一天你终于回想起曾经被Java后端支配的恐怖 ,还有只能使用http通信的那份屈辱。
你打开Google,你输入了关键词"Dubbo node.js",你发现曾经有不少人和你一样的困扰,你在前辈们的引导下跳转到了https://github.com/p412726700/node-zookeeper-dubbo ,你匆匆浏览了下readme,你看到了希望。
你开始输入:

npm install node-zookeeper-dubbo --save  

来进行安装。
你开始进行配置:

// "/config/dubbo.js"
const nzd = require('node-zookeeper-dubbo')  
const j2j = require('js-to-java')

const options = {  
  application: "test", //项目名称
  register: "192.168.1.35:2181,192.168.1.36:2181", //zookeeper服务器地址,多个服务器之间使用逗号分割
  dubboVer: "2.5.3",//dubbo的版本,询问后端得知是2.3.5
  // root: '', //注册到zookeeper上的根节点名称,询问后端得知,目前没有使用
  dependencies: { //依赖的dubbo服务集,也就是你要调用的服务的配置集合
    isms: { //服务的标识,自定义的,按自己喜好
      interface: "com.xxx.api.ISmsService", //后端dubbo服务地址
      version: "1.0_dev", //服务版本号
      timeout: "30000", //超时时间
      // group: 'isis', //询问后端得知,分组的功能也没有使用
      methodSignature: {//服务里暴露的方法的签名,可以省略
        sendYPSms: (content, mobile, state) => (java) => [java.String(content), java.String(mobile), java.String(state)],
        sendSms: (content, mobile, state) => (java) => [java.String(content), java.String(mobile), java.String(state)]
      }
    }
  },
  java: j2j //使用js-to-java库来简化传递给java后端的值的写法
}

const Dubbo = new nzd(options)

module.exports = Dubbo  

你配置好了,开始调用

const Dubbo = require('/config/dubbo')

Dubbo.isms.sendYPSms("hello, world", "手机号码", "0").then(() => {  
    //调用成功的回调
}).catch(err => {
    //调用失败的回调
})

你望着收件箱里的短信,眼睛里闪着诡异的光。

注:以上配置代码项的具体配置参数为了不泄露具体项目信息,已经进行乱写加密处理。想要具体配置参数吗?想要的话可以给你,去找吧!一切都放在后端的.properties和.yml文件里了!