node怎么做消息队列?

消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到MQ中而不用管谁来取,消息使用者只管从MQ中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

消息队列的使用场景

  • 异步处理

  • 应用解耦

  • 流量削峰

使用nodejs+UDP实现一个简单的消息队列

const udpClient = require('dgram').createSocket('udp4');
var clients= {};
udpClient.on('message', (message, socket) => {
   var repMsg="";
   var msgObj= JSON.parse(message.toString());
   if(msgObj["id"] != null) {
       if(clients[msgObj["id"]] != null &&clients[msgObj["id"]].length> 0) {
            repMsg = clients[msgObj["id"]].shift();
       }
   }
   else {
       var from =msgObj["from"];
       var to =msgObj["to"];
       var msg =msgObj["msg"];
       if(clients[to] == null) {
            clients[to] = new Array();
       }
       clients[to].push(message.toString());
       repMsg = "1";
   }
   var buf = new Buffer(repMsg);

   udpClient.send(buf, 0, buf.length, socket.port, socket.address);
});
udpClient.bind(5555);

测试步骤:

启动服务: node udpmq.js

打开两个UDP测试工具,如下图。左边是发送消息(json格式),客户端 “aa”发送给”bb”,

右图是接收消息,客户端”bb”发送自己的id给消息队列服务,服务查找“bb”的消息数组,并按FIFO的方式返回“bb”一条消息。

1 (2).jpg-600UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。

以上就是node怎么做消息队列?的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Node.js答疑