egg.js 配置连接dubbo服务
egg.js+dubbo2.js 连接dubbo服务
项目中安装dubbo2.js
npm install dubbo2.js --save
项目中安装 js-to-java
npm install js-to-java --save
项目中配置dubbo服务
编写dubbo service 配置 TestService.js
-
创建app/dubbo/TestService.js
TestService.js
'use strict'; const config = { dubboInterface:'com.xxx.xxx.service.TestService',//dubbo service TestService类 //methods 方法,项目中使用到该服务中的接口,需放入methods中 methods:{ //dubbo TestService 中 hello 接口 hello(data){ return [data]; } }, timeout:60000 //timeout } module.exports = { interfaceName:config.dubboInterface, service: dubbo => dubbo.proxyService(config) }
-
创建 app/dubbo/index.js
index.js
'use strict'; const { Dubbo, Setting } = require('dubbo2.js'); const TestService = require('./TestService.js'); /* 配置service Setting.match解析: Setting.match(arg: string | Array<string> | RegExp | TPredictFunction, dubboSetting?: IDubboSetting) arg 可为string ,或 array。 若只有一个dubbo Service 可传入string or array类型,多个dubbo 服务,需传入 array类型。 dubboSetting 配置dubbo 服务 {version , timeout , group} interface IDubboSetting { group?: string; version?: string; timeout?: number; } */ const dubboSetting = Setting.match([TestService.interfaceName],{version:''}) //获取 service 集合 const service = { ITestSetvice:TestService.service } 导出实例化dubbo 函数 exports.dubbo = function(register){ return new Dubbo({ application: { name: 'consumer-test-service' },//消费者应用名称,可根据实际填写, register,//dubbo 注册中心 dubboSetting, //dubbo 配置 dubboInvokeTimeout: 60000, service // 使用到的service 集合 }) }
-
配置dubbo 注册中心
config.default.js
'use strict'; module.exports = appInfo =>{ const config = (exports = {}); .... .... //dubbo注册中心 多个用 , 分割 config.dubboRegister = '127.0.0.1:8899,127.0.0.2:9988', ... }
-
初始化dubbo 服务
app.js
'use strict'; const { dubbo } = require('./dubbo/index') module.exports = app =>{ app.dubbo = dubbo(app.config.dubboRegister); //连接dubbo }
-
调用dubboService 方法
新建app/controller/test.js
'use strict' const Controller = require('egg').Controller; const java = require('js-to-java'); class TestController extends Controller { async test(){ const { ctx, app } = this; //可以参考 npm 仓库 js-to-java, 下行代码将 {num:123} 序列化为 TestService$hello 接口所需要的类型 const data = java('com.xxx.req',{ num:123 }); const resp = await app.dubbo.service.ITestService.hello(data); if(resp.res){ ctx.body = resp.res; } //resp.res 为接口返回结果; resp.err 中返回dubbo service 连接错误信息 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南