這個樂趣,微服務實現發佈和訂閱

初識ØMQ

簡介

  • ØMQ中Ø(Alt+0216)是Zero空集,M是Message消息,Q是Quene隊列,ØMQ是消息隊列的縮寫。
  • ØMQ提供了易拓展、低延遲的消息解決方案。
  • ØMQ基於事件循環的開發模式

官網

安裝

// 安裝
npm i zeromq
// 測試
node -p -e "require('zeromq').version"
-p將結果打印在控制檯
-e解析後面的字符串
複製代碼

發佈

模塊

const zmq = require('zeromq');
複製代碼

節點

  • 建立一個消息發佈節點
const publisher = zmq.socket('pub');
複製代碼

推送

  • 使用JSON.stringify將JSON轉換成字符串
  • publisher.send發送消息
  • setInterval實現5秒向訂閱者發佈一次消息
setInterval(() => {
    publisher.send(JSON.stringify({
        Status: 1,
        Data: 'Hello, world!'
    }));
}, 5000);
複製代碼

端口

  • 使用publisher.bind綁定TCP端口60400
publisher.bind('tcp://*:60400');
複製代碼

訂閱

模塊

const zmq = require('zeromq');
複製代碼

節點

  • 建立一個訂閱節點
  • 接收全部消息
const subscriber = zmq.socket('sub');
subscriber.subscribe('');
複製代碼

監聽

  • subscriber對象是從EventEmitter類繼承過來的
  • 從publisher接收到信息是,馬上觸發message事件
  • subscriber.on監聽message事件
subscriber.on('message',data=>{
    console.log(`${data}`);
});
複製代碼

鏈接

  • 使用 subscriber.connect 創建鏈接
subscriber.connect("tcp://localhost:60400");
複製代碼

最後

  • 如今把整個程序運行起來,看看發佈者是如何5秒發送消息,訂閱者如何接收消息。

相關文章
相關標籤/搜索