/egg-nzd-demo

egg通过node-zookeeper-dubbo与java后端通信

Primary LanguageJavaScript

nzd-demo

QuickStart

see egg docs for more detail.

Development

$ npm i
$ npm run dev
$ open http://localhost:7001/

Deploy

$ npm start
$ npm stop

npm scripts

  • Use npm run lint to check code style.
  • Use npm test to run unit test.
  • Use npm run autod to auto detect dependencies upgrade, see autod for more detail.

使用指南

   1、配置nzdconfig/nzd_config.js
   2、根据java后端的接口文件生成nzd_services文件夹中的opt,注意interface是java文件的完整包名,方法和java文件的方法也需要一致,注意参数也是需要和java的参数一致。
   3、在controller(使用services)引入dubbo,将dubbo中调用方法,后端方法以map为主。

注意的坑

   1、配置nzdconfig/nzd_config.js文件中的application名称不是java工程名,是dubbo的工程名,ip为服务器端ip,端口为zookeeper的端口。
       //配置项目名称
       application:'edu_exam_provider',
       //配置项目ip
       register:'192.168.17.214:2181',
       //配置dubbo版本号
       dubboVer:'2.5.10',
       
   2、 nzd_services文件夹中的opt文件中的version和group与java端一致就可以了
       version:'v1.0.0',
       group:'',
       
   3、注意方法名传参问题,大部分是传map给后台
       //传空map
       selectByPrimaryKey:(map)=>[{'$class': 'java.util.Map','$' :map}],
       //传四个参数的map
        //根据id获取数据
       let map = {};
       map['siid']='7910001';
       map['ciid']='001';
       map['thcourses']='全部';
       map['PageNow']=0;
       let result = await Dubbo.UserTeacherService.selectByPrimaryKey(map);
       
   4、插入一个对象给java端的方法:建议参考官方文档: https://github.com/p412726700/node-zookeeper-dubbo
   
       4.1 实例opt定义:这里插入的数据类型为com.jzy.edu.exam.domain.User,一个bean类型参数是user
       insertUser: user => [ { $class: "com.jzy.edu.exam.domain.User", $: user }],
       
       4.2 services中使用:先定义一个对象,再插入
       const data1={id:2222,name:'teacherss',salary:2,job:'myjob'};
       app.get('/foo/insertUser',(req,res)=>{
         console.log("插入user对象");
         Dubbo.Foo
             .insertUser(data1)
             .then(data=>res.send(data))
             .catch(err=>res.send(err))
       
       })