使用 Thrift 实现 Java 和 NodeJS 之间的跨语言RPC调用

使用 Thrift 实现 Java 和 NodeJS 之间的跨语言RPC调用,第1张

一 搭建 NodeJs 项目

# 先确认 node 环境是否正常

E:\nodeproject\thriftnodejs>node --version

v12.18.0

# 在项目下,安装 npm 依赖

E:\nodeproject\thriftnodejs>cnpm install thrift --save

√ Installed 1 packages

√ Linked 1 latest versions

√ Run 0 scripts

√ All packages installed (used 208ms(network 205ms), speed 21.03KB/s, json 1(4.31KB), tarball 0B)

二 使用 thrift 工具生成 NodeJs 相关文件

E:\JVMDemo\demo2022>thrift --gen js:node src/main/java/thrift/Student.thrift

并将这两个文件复制到 node 项目下

E:\nodeproject\thriftnodejs

三 使用 NodeJs 开发 Thrift 服务端
var thrift = require("thrift");
var StudentService = require('./StudentService');
// 启动服务器,默认只支持 TBufferedTransport 和 TBinaryProtocol
var server;
var transport = thrift.TFramedTransport;
var protocol = thrift.TBinaryProtocol;
var options = {transport: transport, protocol: protocol};

server = thrift.createServer(StudentService, {
    addStudent: function (name, age) {
        console.log("--NodeJs服务端,模拟增加 *** 作--");
        console.log(name + "," + age + "增加成功!");
        return true;
    },
    queryStudents: function () {
        console.log("--NodeJs服务端,模拟查询 *** 作--");
        var students = [{name: "zs", age: 23}, {name: "ls", age: 24}];
        console.log("--查询完毕--");
        return students;
    }
}, options);
server.listen(8888);
四 使用 NodeJs 开发 Thrift 的客户端
var thrift = require('thrift');
var StudentService = require('./StudentService.js');
var ttypes = require('./Student_types');

var transport = thrift.TFramedTransport;
var protocol = thrift.TBinaryProtocol;
var options = {transport: transport, protocol: protocol};
var connection = thrift.createConnection("127.0.0.1", 8888, options);

// 创建客户端
client = thrift.createClient(StudentService, connection);


// 处理异常
connection.on('error', function (err) {
    console.error(err);
});

client.addStudent("ww", 25, function (err, result) {
    console.log(result ? "增加成功" : "增加失败");
});

client.queryStudents(function (err, result) {
    result.forEach(function (student, index) {
        console.log("查询结果如下:")
        console.log(student.name + "," + student.age)
    });
});

编写完后的项目结构如下:

五 测试 1  启动上一篇博客 Java 版本的服务端,用 nodeJS 的客户端去访问

Java 服务端打印如下

--Java服务端,模拟增加 *** 作--

增加成功:ww,25

--Java服务端,模拟查询 *** 作--

--查询完毕--

NodeJs 客户端打印如下

E:\nodeproject\thriftnodejs>node thriftClient.js

增加成功

查询结果如下:

zs,23

查询结果如下:

ls,24

2 启动 nodeJs 的服务端,用上一篇博客 Java 版本的客户端去访问

客户端打印如下

RPC调用服务端的queryStudents()方法

zs    23

ls    24

RPC调用服务端的addStudent()方法

增加成功!

服务端打印如下

--NodeJs服务端,模拟查询 *** 作--

--查询完毕--

--NodeJs服务端,模拟增加 *** 作--

ww,25增加成功!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1324973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存