欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

node消息隊列怎么使用

這篇文章主要介紹“node消息隊列怎么使用”,在日常操作中,相信很多人在node消息隊列怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”node消息隊列怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、品牌網(wǎng)站設(shè)計、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實力堅強(qiáng)的技術(shù)研發(fā)團(tuán)隊及素養(yǎng)的視覺設(shè)計專才。

1.消息隊列

什么是消息隊列

消息隊列就是消息的傳輸過程中保存消息的容器,本質(zhì)是一個隊列(先進(jìn)先出)

node消息隊列怎么使用

消息指的是需要傳輸?shù)臄?shù)據(jù),可以是一些文本,字符串,或者是對象等信息。

消息隊列則是兩個應(yīng)用間的通信服務(wù),消息的產(chǎn)生者將數(shù)據(jù)存放到消息隊列中就可以立即返回,不需要等待消息的接收者應(yīng)答。即:生產(chǎn)者保證數(shù)據(jù)插入隊列,誰來取這條消息不需要管。消息的接收者則只專注于接受消息并處理。

node消息隊列怎么使用

消息隊列能做什么

  • 解耦上面介紹了,消息隊列將消息的生產(chǎn)者和消息的接收者分開,彼此都不受影響。

  • 異步異步就是為了減少請求的響應(yīng)時間,消息的生產(chǎn)者只需要處理簡單的邏輯,并將數(shù)據(jù)放到消息隊列中即可返回,復(fù)雜的邏輯,比如:數(shù)據(jù)庫操作,IO操作由消息的接收者處理。

  • 削峰消息隊列應(yīng)用在服務(wù)時,能將瞬時大量涌入的請求信息保存到消息隊列中,并立即返回。再由消息的接收者根據(jù)數(shù)據(jù)處理請求。

  • 應(yīng)用場景游戲活動,秒殺活動,下單等會造成瞬時流量暴增的應(yīng)用。

2.消息隊列的概念

介紹完消息隊列的基本信息,在開發(fā)消息隊列之前先介紹一下消息隊列的一些基本概念~

消息的生產(chǎn)者(producer)與消費(fèi)者(customer)

上文提到的生產(chǎn)者消費(fèi)者,提供的是

鏈接,通道與隊列

  • 鏈接(connection):表示服務(wù)程序與消息隊列之間的一條鏈接。一個服務(wù)程序可以創(chuàng)建多條鏈接。

  • 通道(channel):消息隊列鏈接之間的一個通,一個鏈接可以有多個通道。

  • 隊列(queue):消息隊列中存放數(shù)據(jù)的隊列,一個消息隊列服務(wù)可以有多個隊列。

總結(jié)一下,鏈接,通道隊列之間的關(guān)系是這樣的

node消息隊列怎么使用

交換機(jī)(exchange)

消息隊列發(fā)送消息必須要有一個交換機(jī),如果沒有指定則用的是默認(rèn)的交換機(jī)。交換機(jī)的作用就是將消息才推到對應(yīng)的隊列中。消息隊列中一共有4種交換機(jī)

  • Direct: 指定隊列模式,消息來了,只發(fā)給指定的Queue,其他Queue都收不到。

  • fanout: 廣播模式,消息來了,就會發(fā)送給所有的隊列。

  • topic: 模糊匹配模式,通過模糊匹配的方式進(jìn)行相應(yīng)轉(zhuǎn)發(fā)。

  • header: 與Direct模式類似。

3.node使用rabbitMQ

安裝rabbitMQ

  • 安裝rabbitMQ可以通過官網(wǎng)上進(jìn)行下載安裝,傳送門

  • MAC可以直接用brew命令安裝

    brew install rabbitmq

  • 安裝完成后啟動rabbitmq服務(wù)

node消息隊列怎么使用

然后再本地中訪問 http://localhost:15672/ 就可以看到rabbitmq服務(wù)的后臺。初始的賬號密碼均為 guest

node消息隊列怎么使用

node項目安裝amqplib

amqplib是node中使用消息隊列的一套工具,可以讓我們快速地使用消息隊列

創(chuàng)建生產(chǎn)者

/** product.js 消費(fèi)者 */


const amqplib = require('amqplib');
const config = require('./config');

const { connectUrl } = config;

(async () => {
  const connection = await amqplib.connect(connectUrl);

  const channel = await connection.createChannel();
  const exchangeName = 'testExchange';
  const key = 'testQueue';
  const sendMsg = 'hello rabbitmq';
    
  // 知道交換機(jī)類型
  await channel.assertExchange(exchangeName, 'fanout', {
    durable: true,
  });
    
  // 指定一個隊列
  await channel.assertQueue(key);

  for (let i = 0; i < 100; i++) {
    channel.publish(exchangeName, key, Buffer.from(`${sendMsg} ${i}`));
  }

  await channel.close();
  await connection.close();
})();

運(yùn)行后在后臺可以看到新增了一個有100條消息的隊列

node消息隊列怎么使用

創(chuàng)建消費(fèi)者

/** customer.js 消費(fèi)者 */

const amqplib = require('amqplib');
const config = require('./config');

const { connectUrl } = config;

(async () => {
  let connection = await amqplib.connect(connectUrl);
  const exchangeName = 'testExchange';
  const key = 'testQueue';
  // 創(chuàng)建兩個通道
  const channel1 = await connection.createChannel();
  const channel2 = await connection.createChannel();
  // 指定一個交換機(jī)
  await channel1.assertExchange(exchangeName, 'fanout', {
    durable: true,
  });
  // 指定一個隊列
  await channel1.assertQueue(key);
  await channel1.bindQueue(key, exchangeName, key);
  channel1.consume(key, (msg) => {
    console.log('channel 1', msg.content.toString());
  });

  await channel2.assertExchange(exchangeName, 'fanout', {
    durable: true,
  });
  await channel2.assertQueue(key);
  await channel2.bindQueue(key, exchangeName, key);
  channel2.consume(key, (msg) => {
    console.log('channel 2', msg.content.toString());
  });
})();

執(zhí)行后可以看到,兩個通道可以同時工作接收消息

node消息隊列怎么使用

到此,關(guān)于“node消息隊列怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文名稱:node消息隊列怎么使用
當(dāng)前URL:http://aaarwkj.com/article38/ipcosp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、小程序開發(fā)、網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
国产91在线精品超碰人人| 中文字幕在线精品乱码麻豆| 黄片在线免费在线播放| 久久精品国产亚洲av麻| 日本视频免费一区二区| 亚洲国产成人精品av在线| 免费草b视频在线观看| 人妻少妇中文字幕在线播放| 亚洲av二区三区成人| 91老熟女露脸大合集| 92午夜福利在线视频| 最新中文字幕成人在线观看| 亚洲国产中文字幕高清| 日韩人妻中文字幕专区| 中文字幕日韩精品久久| 久久久久久成人综合色| 国产美女口爆吞精久久| 精品久久久久久久久极品| 国产999精品免费国产| 日本新任女教师在线播放| 放荡精品少妇一区二区三区| 国产又粗又长又猛又爽视频| 日韩大片一区二区三区在线观看| 五月综合丁香婷婷久久| 欧美一区二区三区人妻激情| av丰满人妻一区二区| 中文字幕亚洲精品四区| 伊人不卡中文字幕在线一区| 91亚洲精品综合久久| 免费看欧美粗又大爽老| 日韩区一区二在线视频| 农村人妻一区二区三区视频 | 四虎永久精品在线视频| 日本精品一区二区不卡| 我想看日韩一级黄色片| 黄片大全在线免费视频观看| 少妇激情一区二区三区免费视频| 91精品在线观看首页| 久草福利视频免费播放| 十八岁毛片一区二区三区| 日本经典三级在线视频|