nodejs使用ZeroMQ进行消息通信

最近想在electron和python之间做通信,了解一些消息通信中间件,最终选定ZeroMQ进行通信(因为官网有很详细的教程)

首先创建一个node项目,打开任意文件夹后

npm init -y

安装ZeroMQ,新版可以解决很多不兼容问题,使用淘宝镜像cnpm安装成功率大点

cnpm install zeromq@6.0.0-beta.6

示例

新建一个server.js

//  Hello World server
//  Binds REP socket to tcp://*:5555
//  Expects "Hello" from client, replies with "World"

const zmq = require('zeromq');
// console.log('zmq', zmq)
async function runServer() {
  const sock = new zmq.Reply();

  await sock.bind('tcp://*:5555');

  for await (const [msg] of sock) {
    console.log('Received ' + ': [' + msg.toString() + ']');
    await sock.send('World');
    // Do some 'work'
  }
}

runServer();

再建一个client.js

//  Hello World client
const zmq = require('zeromq');

async function runClient() {
  console.log('Connecting to hello world server…');

  //  Socket to talk to server
  const sock = new zmq.Request();
  sock.connect('tcp://localhost:5555');

  for (let i = 0; i < 10; i++) {
    console.log('Sending Hello ', i);
    await sock.send('Hello');
    const [result] = await sock.receive();
    console.log('Received ', result.toString(), i);
  }
}

runClient();

然后分别运行

 最后附上官网链接,一起学习

ZeroMQ官网

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
两个 Node.js 应用程序可以使用消息队列进行异步通信。下面是使用 RabbitMQ 消息队列的代码示例: 在发送者端,使用以下代码连接到 RabbitMQ,并将消息发送到名为 "message_queue" 的队列: ``` var amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', function(error0, connection) { if (error0) { throw error0; } connection.createChannel(function(error1, channel) { if (error1) { throw error1; } var queue = 'message_queue'; var message = 'Hello World!'; channel.assertQueue(queue, {durable: false}); channel.sendToQueue(queue, Buffer.from(message)); console.log(" [x] Sent %s", message); }); setTimeout(function() { connection.close(); process.exit(0); }, 500); }); ``` 在接收者端,使用以下代码连接到 RabbitMQ 并从队列中接收消息: ``` var amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', function(error0, connection) { if (error0) { throw error0; } connection.createChannel(function(error1, channel) { if (error1) { throw error1; } var queue = 'message_queue'; channel.assertQueue(queue, {durable: false}); console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue); channel.consume(queue, function(msg) { console.log(" [x] Received %s", msg.content.toString()); }, { noAck: true }); }); }); ``` 以上代码演示了如何使用 RabbitMQ 消息队列在两个 Node.js 应用程序之间进行异步通信。发送者将消息发布到队列,然后接收者从队列中获取并处理消息
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值