node 호출dubbo 인터페이스

3110 단어 node

node 호출dubbo 인터페이스

  • node-zookeeper-dubbo
  • 1, 주요 과정과 필요 매개 변수
  • 1, node-zookeeper-dubbo 생성 실례
  • 2, node-zookeeper-dubbo 실례 호출dubbo방법
  • 2, 코드
  • 3, 실행
  • 4, 버그
  • 5,git
  • 6, 연구
  • node-zookeeper-dubbo


    1. 주요 과정과 필요 매개 변수


    1, node-zookeeper-dubbo 생성 실례

  • register:zookeeper의 등록 주소
  • dubboVer: 백엔드 dubbo 서비스용 버전
  • dependencies: 사용자 정의 인터페이스 이름
  • interface: 실제 두보 인터페이스 이름
  • methodSignature: 실제 두보 인터페이스 이름의 방법명 및 대응 매개 변수

  • 2, node-zookeeper-dubbo 실례 호출dubbo 방법


    1, 스스로 http 요청 만들기
    2, http 요청에서 dubbo 방법을 호출합니다 (파라미터의 정의 형식과 자바 정의 파라미터를 전송할 모델 클래스 이름 주의)

    코드


    node-dubbo.js
    const ZookeeperDubbo = require('node-zookeeper-dubbo');
    const app=require('express')();
    var java = require('js-to-java');
    
    const Dubbo = new ZookeeperDubbo({
      application: { name: 'provider' },
      registry: '172.29.8.100:2181',
      dubboVer: '2.8.4',
      root: 'dubbo',
      dependencies: {
        IUserApi: {
          interface: 'com.xxx.api',
          timeout: 6000,
          methodSignature: {
            getUserLists : (Obj) => [{$class: 'com.xxx.model',$:Obj}],
          }  
        }
      }
    })
    
    app.get('/foo',(req,res)=>{
    
      const customerObj = {
        $class: 'com.xxx.model',
        $: {
          userName: java.String('test'),
          uin: java.String('1000000000000')
        }
      };
    
      Dubbo.IUserApi
        .getUserLists(customerObj)
        .then(data=> {
          console.log('data---------'+data);
          res.send(data)
        })
        .catch(err=>{
          console.log('err---------'+err);
          res.send(err)
        })
    
    })
    
    
    app.listen(9090)
    

    package.json
    {
      "name": "dubbo",
      "version": "1.0.0",
      "description": "",
      "main": "node-dubbo.js",
      "dependencies": {
        "express": "^4.16.4",
        "js-to-java": "^2.6.1",
        "node-zookeeper-dubbo": "^3.0.15"
      },
      "devDependencies": {},
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    
    

    운행


    1,node node-dubbo.js (성공적인 Dubbo 서비스 init done 초기화 알림) 2, 브라우저가 자신이 만든 인터페이스를 실행합니다. (Dubbo에 대응하는 인터페이스의 방법의 반환값을 되돌려줍니다)http://localhost:9090/foo

    넷, 버그


    1,node-zookeeper-dubbo의 3.0.0 및 이하 버전을 설치하면 오류가 발생하여 초기화에 성공하지 못합니다
    2, Fail to decode request due to: RpcInvocation node-zookeeper-dubbo 패키지에서libs의 encode를 주석 해제합니다.js 파일의 다음 코드 (dubbox에 대한 것이지만 백엔드는 dubbo를 사용합니다)
    // if (ver.startsWith("2.8")) {
    //   body.write(-1); //for dubbox 2.8.X
    // }
    

    다섯,git


    https://github.com/omnip620/node-zookeeper-dubbo https://github.com/omnip620/node-zookeeper-dubbo/issues/50

    연구


    dubbo-js https://github.com/apache/dubbo-js

    좋은 웹페이지 즐겨찾기