精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解決消息延遲和堆積問題

開發(fā) 前端
我們在上篇已經(jīng)說明了如何解決消息丟失的問題,也就是保證了消息的可靠性,那么其余兩個問題同樣重要,這篇我們將講述其余兩個問題的解決方式~!
文末本文轉(zhuǎn)載自微信公眾號「小菜良記」,作者蔡不菜丶。轉(zhuǎn)載本文請聯(lián)系小菜良記公眾號。
  • 消息可靠性問題:如何確保發(fā)送的消息至少被消費一次?
  • 延遲消息問題:如何實現(xiàn)消息的延遲投遞?
  • 消息堆積問題:如何解決數(shù)百萬級以上消息堆積,無法及時消費問題?

我們在上篇已經(jīng)說明了如何解決消息丟失的問題,也就是保證了消息的可靠性,那么其余兩個問題同樣重要,這篇我們將講述其余兩個問題的解決方式~!

一、延遲消息

延遲消息 字面意思就是讓延遲接收消息,那么如何能讓消息延遲到達?這就是我們要思考解決的問題,在了解延遲隊列之前我們需要先明白 RabbitMQ 中的兩個概念

  • 死信交換機
  • TTL

1)死信交換機

死信(dead letter),也就是廢棄已死亡的消息,那什么情況下一個普通的消息能夠成為死信?需要符合以下三個條件:

消費者使用 basic.reject 或 basic.nack 聲明消費失敗,并將消息的 requeue 參數(shù)設(shè)置為 false

消息是一個過期消息,超時后無人消費

要投遞的隊列消息堆積滿了,最早的消息就會成為死信

而 死信交換機 便是 死信 的歸屬。

如果一個隊列配置了 dead-letter-exchange 屬性,指定了一個交換機,那么隊列中的死信就會投遞到這個交換機中,而這個交換機就稱為 死信交換機 - DLX(Dead Letter Exchange )

步驟:當生產(chǎn)者正常投遞到隊列(simple.queue)中,如果消費者從隊列(simple.queue) 消費消息卻聲明了 reject,那并且隊列綁定了死信交換機(dl.queue),那么這個時候成為死信的消息就會投遞到這個死信隊列(dl.queue)中。

死信投遞過程

從正常隊列 --> 死信隊列 的過程,我們必須聲明兩個關(guān)鍵信息

  • 死信交換機的名稱
  • 死信交換機與死信隊列綁定的路由key

而這兩個信息也是我們投遞消息的基礎(chǔ)配置。

接下來我們簡單模擬一下 條件1 所產(chǎn)生的場景

1、首先聲明一個死信交換機和死信隊列

我們這邊是使用簡單的注解方式直接生成

生成死信交換機和死信隊列

通過 RabbitMQ 控制臺界面可以看出已經(jīng)成功生成

2、聲明正常使用交換機與隊列

然后這個時候我們就可以創(chuàng)建一個正常使用的交換機與隊列,并指明死信交換機

同樣可以通過控制臺查看創(chuàng)建狀態(tài)

其中是否有聲明死信交換機我們可以通過隊列的 DLX 和 DLK 標志判斷

3、模擬拒收

然后我們現(xiàn)在通過代碼模擬客戶端拒絕消息的場景

1)消息發(fā)送

2)消息接收

查看控制臺,結(jié)果如下:

  1. 2021-11-06 23:56:52.095  INFO 2112 --- [ntContainer#0-1] c.l.m.c.listener.SpringRabbitListener    : 正常業(yè)務(wù)交換機 | 接收到的消息 : [hello] 
  2. 2021-11-06 23:56:52.118  INFO 2112 --- [ntContainer#1-1] c.l.m.c.listener.SpringRabbitListener    : 死信交換機 | 接收到的消息 : hello 

這說明我們死信交換機已經(jīng)成功發(fā)揮作用

2)TTL

以上我們已經(jīng)成功認識到了 死信交換機 的使用,但是這與我們一開始說的 延遲隊列 似乎并沒有太大關(guān)系,莫急~接下來說到的 TTL(Time-To-Live) 就是用來處理延遲消息的~!

在 TTL 的概念中,如果一個隊列中的消息 TTL 結(jié)束后仍未被消費,那么這個消息就會自動變?yōu)樗佬牛?TTL 超時情況分為兩種:

  • 消息所在的隊列設(shè)置了存活時間
  • 消息本身設(shè)置了存活時間

我們同樣進行上述 條件2 的模擬場景

  • 1、聲明死信交換機與死信隊列(上述已完成)
  • 2、聲明延遲隊列并指定死信交換機

同樣控制臺查看創(chuàng)建結(jié)果,并且我們發(fā)現(xiàn)不止有 DLX 和 DLK 標志,還多了個 TTL ,說明該隊列是延遲隊列

  • 3、模擬消費超時情況

我們往延遲隊列中發(fā)送一條消息,并且沒有消費者進行消費,等待 1 分鐘后查看是否能進入 死信隊列 中

我們已經(jīng)發(fā)送了一條消息到延遲隊列并且一分鐘后也成功在控制臺發(fā)現(xiàn)了這條信息已經(jīng)進入到了死信交換機

  1. 2021-11-07 00:01:30.854  INFO 32752 --- [ntContainer#1-1] c.l.m.c.listener.SpringRabbitListener    : 死信交換機 | 接收到的消息 : test ttl-message 

以上是配置了隊列超時時間,消息本身自然也能配置超時時間,當 消息 和 隊列 都存在超時時間時,那么就以最短的 TTL 為準,消息的超時配置如下:

如上圖所示,我們可以利用 Message 這個類來傳遞消息信息,并設(shè)置上超時時間,我們設(shè)置的是 5000 ms,等待發(fā)送成功后,控制臺過5000 ms 也成功打印了死信交換機消費的消息:

  1. 2021-11-07 00:03:09.048  INFO 39996 --- [ntContainer#1-1] c.l.m.c.listener.SpringRabbitListener    : 死信交換機 | 接收到的消息 : this is a ttl message 

3)延遲隊列

我們上述是使用 死信交換機 來間接實現(xiàn) 延遲隊列 的效果,但實際在 RabbitMQ 不必如此麻煩,RabbitMQ 已經(jīng)為我們封裝好了插件,我們只需要下載安裝即可~

RabbitMQ 插件下載地址

我們進入地址可以發(fā)現(xiàn)有許多插件,搜索 delay 關(guān)鍵字找到我們需要的插件進行下載

下載完后直接上傳到 RabbitMQ 的插件目錄 - plugins,小菜這邊是使用 docker 臨時安裝測試的,所以已經(jīng)將該插件目錄掛載出來了:

  1. docker run -itd --name rabbitmq -v plugins:/plugins -p 15672:15672 -p 5672:5672 rabbitmq:management 

因此我這邊直接將插件上傳到容器中的 plugins 目錄即可~

然后進入到容器中執(zhí)行以下命令進行插件開啟

  1. rabbitmq-plugins enable rabbitmq_delayed_message_exchange 

并且我們在控制臺創(chuàng)建交換機的時候可以看到 type 類型多了個選項

成功執(zhí)行到這步就說明已經(jīng)開啟了 RabbitMQ 的延遲隊列功能

那接下來我們就可以來使用 DelayExchange,首先我們需要了解代碼的方式創(chuàng)建延遲交換機:

方式1

方式2

當我們?nèi)f事具備之后就可以來發(fā)送消息了

在發(fā)送消息的時候,消息頭中一定要攜帶上 x-delay 參數(shù),指定上延遲時間

通過這樣配置之后,我們可以在控制臺看到,經(jīng)過10秒后 delay.queue 才收到對應(yīng)消息,然后被對應(yīng)消費者消費

3)總結(jié)

我們上面從 死信交換機 到 TTL 到 延遲隊列,一步步認識了如何實現(xiàn)延遲消息的功能,然后我們進行一個小小的總結(jié):

問題1:什么樣的消息會成為死信?

消息被消費者 reject 或返回 nack

消息超時未及時消費

消息隊列滿了

問題2:消息超時的方式

給隊列設(shè)置 TTL 屬性

給消息設(shè)置 TTL 屬性

問題3:如何使用延遲隊列

下載并啟用 RabbitMQ 延遲隊列插件

聲明一個交換機,并將 delayed 屬性設(shè)置為 true

發(fā)送消息時,添加 x-delay 頭,值為超時時間

問題4:延遲隊列的使用場景

延遲發(fā)送短信通知

訂單自動取消

庫存自動回滾

二、惰性隊列

講完延遲隊列,我們繼續(xù)來認識惰性隊列

講惰性隊列之前,我們先拋出一個問題~

RabbitMQ 如何解決消息堆積問題

什么情況下會出現(xiàn)消息堆積問題?

  1. 當生產(chǎn)者生產(chǎn)速度遠遠消費者消費速度
  2. 當消費者宕機沒有及時重啟

那么如何解決這個問題?通常思路如下:

  1. 在消費者機器重啟后,增加更多的消費者進行處理
  2. 在消費者處理邏輯內(nèi)部開辟線程池,利用多線程的方式提高處理速度
  3. 擴大隊列的容量,提高堆積上限

這幾個方式從理論上來說解決消息堆積問題也是沒有問題的,但是處理方式不夠優(yōu)雅甚至不夠靈活~ 那么除了以上的幾種解決方式,我們可以利用 RabbitMQ 中自帶的一種隊列類型 -- 惰性隊列

什么是惰性隊列?我們認識一下惰性隊列的幾個特性:

  • 接收到消息后直接存入磁盤而非內(nèi)存
  • 消費者要消費消息時才會從磁盤中讀取并加載到內(nèi)存中
  • 它支持百萬級消息的存儲

說到底,就是利用磁盤的緩沖機制,而這種機制的缺點就是消息的時效性會降低,性能受限于磁盤的IO,認識特性和缺點之后,我們便來看看如何創(chuàng)建惰性隊列

方式1

方式2

方式3

該方式是直接基于命令行修改將一個正在運行中的隊列修改為惰性隊列

  1. rabbitmqctl set_policy Lazy "^lazy-queue$" '{"queue-mode":"lazy"}' --apply-to queues   

其中幾個命令參數(shù)含義如下:

  • rabbitmqctl:命令行工具
  • set_policy:添加一個策略
  • Lazy:策略名稱,可以自定義
  • ^lazy-queue$:用正則表達式匹配隊列的名稱
  • '{"queue-mode":"lazy"}':設(shè)置隊列為 lazy 模式
  • --apply-to queues:策略的作用對象,是所有的隊列

這種惰性隊列的方式盡管缺點是消息時效性會降低,但是在某些場景下也不是不能接受,何況它的優(yōu)點同樣明顯:

  1. 基于磁盤存儲,消息上限高
  2. 沒有間歇性的 page-out,性能穩(wěn)定

 

到這里,我們就已經(jīng)講述了 RabbitMQ 的常見問題,對于我們來說,普通的開發(fā)場景可能比較少遇到這些問題,但是沒遇到不等于沒有,所以我們還是需要多認識來防患于未然!

 

責任編輯:武曉燕 來源: 小菜良記
相關(guān)推薦

2021-10-26 08:22:38

消息堆積擴容RocketMQ

2024-07-29 00:01:00

RabbitMQ消息堆積

2023-12-21 08:01:41

RocketMQ消息堆積

2021-11-23 09:00:59

消息堆積擴容RocketMQ

2024-06-24 08:42:11

2024-04-30 08:09:10

PulsarArthas消息隊列

2020-08-27 19:25:01

邊緣計算云計算安全

2022-10-31 09:30:32

kafkaconsumer服務(wù)端

2020-06-08 15:01:55

數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)帶寬

2020-11-13 16:40:05

RocketMQ延遲消息架構(gòu)

2012-01-12 12:08:02

Java

2022-11-08 07:36:17

RocketMQ消費者消息堆積

2025-10-28 08:21:32

2024-04-23 08:46:45

消息積壓KafkaMQ

2023-12-26 18:22:05

RocketMQ延遲消息

2009-09-02 17:36:12

郵件服務(wù)器

2011-09-08 16:34:28

Windows7網(wǎng)絡(luò)延遲

2024-06-05 06:37:19

2024-12-09 08:44:58

2017-03-16 08:46:57

延時消息環(huán)形隊列數(shù)據(jù)結(jié)構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號

深夜福利影院在线观看| 污色网站在线观看| 韩国三级av在线免费观看| 天堂久久一区二区三区| 日韩在线中文字| 日批视频在线看| 老司机2019福利精品视频导航| 亚洲国产电影在线观看| av在线不卡一区| 国产精品第六页| 欧美午夜电影在线观看| 亚洲人线精品午夜| 可以看的av网址| 欧美xx视频| 亚洲一级电影视频| 亚洲欧美日韩精品久久久| 亚洲欧美另类综合| 精品系列免费在线观看| 热99久久精品| 国产一级av毛片| 国产精品成久久久久| 日韩国产精品亚洲а∨天堂免| 天天干天天玩天天操| 欧美xxxhd| 亚洲男帅同性gay1069| 色香蕉久久蜜桃| 青青a在线精品免费观看| 五月天色婷婷丁香| 久草成人资源| 日韩av综合网站| 97超碰免费在线观看| 国产香蕉久久| 日韩人体视频一二区| 国产欧美123| 黄色网在线免费看| 国产精品丝袜久久久久久app| 国产伦精品一区二区三区| 国产伦精品一区二区三区四区| 久久一区国产| 欧美一级片免费在线| 国产一级特黄毛片| 国产精品啊啊啊| 久久综合色影院| 手机av在线看| 天天综合网网欲色| 日韩视频欧美视频| 人与动物性xxxx| 久久精品高清| 日韩中文字幕亚洲| 国产成人精品视频免费| 日本久久综合| 中文字幕日韩欧美在线视频| 制服 丝袜 综合 日韩 欧美| 色婷婷狠狠五月综合天色拍| 亚洲国产欧美一区二区丝袜黑人| 精品少妇人妻av一区二区三区| 亚洲精品影片| 亚洲国产精品va在线看黑人| 亚洲午夜久久久久久久久| 一区二区免费| 亚洲国产天堂网精品网站| 在线观看国产三级| 无码日韩精品一区二区免费| 日韩av在线精品| 巨胸大乳www视频免费观看| 亚州av日韩av| 中文字幕国产精品| av黄色免费在线观看| 亚洲精品在线观看91| 久久久精品免费视频| 免费中文字幕在线| 亚洲福利精品| 日本精品视频在线播放| a片在线免费观看| 久久99精品久久久久| 91黄色精品| 亚洲区小说区图片区| 国产亚洲欧美日韩俺去了| 亚洲福利av在线| 四虎影院观看视频在线观看| 午夜欧美一区二区三区在线播放| 91九色在线观看视频| 国产精品字幕| 精品免费日韩av| 90岁老太婆乱淫| 欧美h版在线| 欧美精品福利在线| 伊人久久久久久久久久久久| 久久99精品视频| 精品免费视频123区| yourporn在线观看视频| 亚洲乱码国产乱码精品精可以看| 青青青青草视频| 国产精品xxx| 精品国产91亚洲一区二区三区婷婷| 美女又爽又黄免费| 欧美成人自拍| 91精品国产高清| 一级淫片免费看| 成人av在线资源网站| 亚洲精品永久www嫩草| 国精一区二区三区| 欧美丝袜自拍制服另类| 国产人妻黑人一区二区三区| 日韩一区欧美| 欧美一级视频一区二区| 国产精品永久久久久久久久久| gogo大胆日本视频一区| 亚洲一区二区精品在线观看| f2c人成在线观看免费视频| 欧美美女bb生活片| 欧美丰满少妇人妻精品| 欧美激情亚洲| 成人h视频在线| 少妇激情av一区二区| 伊人性伊人情综合网| 中文字幕第21页| 老牛影视av一区二区在线观看| 色婷婷av一区二区三区在线观看| 天天操天天干视频| 国产乱人伦精品一区二区在线观看| 欧美人与物videos另类| 国产福利在线免费观看| 欧美精品电影在线播放| 人妻在线日韩免费视频| 国产精品v亚洲精品v日韩精品| 国产欧美日韩免费看aⅴ视频| 四虎影视在线播放| 亚洲国产日日夜夜| 中文字幕在线观看视频www| 色999日韩| 国产精品久久久久久一区二区| 天天摸夜夜添狠狠添婷婷 | 人妻av一区二区| 亚洲乱码免费伦视频| 成人黄色片在线| 色三级在线观看| 欧美图区在线视频| 无码少妇精品一区二区免费动态| 亚洲中午字幕| 精品视频导航| 久久久男人天堂| 亚洲国产精品高清久久久| 久草免费在线观看视频| 国产乱码精品一区二区三区忘忧草| 在线看视频不卡| 日日狠狠久久| 久久精品国产成人精品| 97久久人国产精品婷婷| 亚洲丝袜自拍清纯另类| 一级黄色片国产| 99热国内精品| 91在线视频成人| 91福利国产在线观看菠萝蜜| 欧美一区二区啪啪| 免费人成在线观看| 成人精品国产免费网站| 免费看毛片的网址| 免费成人蒂法| 国产成人97精品免费看片| 国内精品在线视频| 欧美三级一区二区| 日本伦理一区二区三区| 国产在线精品一区二区三区不卡 | 人妻无码一区二区三区| 久久国产免费| 天堂资源在线亚洲视频| 国产精品视频一区二区三区综合| 欧美成aaa人片免费看| 亚洲国产精品二区| 欧美日韩国产丝袜另类| 久久国产柳州莫菁门| 麻豆精品一二三| 日韩a级黄色片| 日韩最新在线| 国产精品一区二区三区在线播放| 久草免费在线| 亚洲国产精品久久久| 日本一区二区三区精品| 国产精品全国免费观看高清 | 老头吃奶性行交视频| 视频在线不卡免费观看| 成人xxxxx色| 欧美一区久久久| 久久精品在线播放| 熟妇高潮一区二区高潮| 在线观看亚洲精品| 丁香花五月激情| www一区二区| 中文字幕视频三区| 一区精品久久| 亚洲国产精品一区二区第四页av | 麻豆视频一区二区| 女人被男人躁得好爽免费视频 | 亚洲精品一区二区在线| 亚洲天堂网在线视频| 亚洲成人tv网| youjizz亚洲女人| 成人成人成人在线视频| 爆乳熟妇一区二区三区霸乳| 亚洲精品888| 欧美精品中文字幕一区二区| 国产亚洲高清一区| 国产精品aaa| av剧情在线观看| 日韩中文字幕在线观看| 青青青草原在线| 日韩一卡二卡三卡| 99成人精品视频| 五月婷婷欧美视频| 中文字幕五月天| 久久精品亚洲精品国产欧美kt∨| 欧洲成人午夜精品无码区久久| 久久亚洲欧洲| 日本a在线天堂| 91九色精品| 日本一区二区在线视频| 美女视频亚洲色图| 91九色偷拍| 91亚洲视频| 欧洲s码亚洲m码精品一区| 欧美aaaaaaa| 久久久999国产| 在线免费看黄| 国产亚洲精品日韩| 欧洲一区av| 亚洲精品理论电影| 免费av网站在线播放| 欧美一区二区免费视频| 亚洲中文字幕在线观看| 日本精品视频一区二区三区| 国产农村妇女aaaaa视频| 亚洲成人精品一区| 国产精品23p| 亚洲一区二区三区影院| 希岛爱理中文字幕| 亚洲精品视频观看| 欧美一区二区三区爽爽爽| 国产精品高潮呻吟| 可以免费看av的网址| 日本一区二区动态图| 国产成人av一区二区三区不卡| 99久久久精品| 国产中文字幕一区二区| www.日韩在线| 久久人妻一区二区| 91在线国内视频| 波多野结衣 在线| www国产精品av| 精品欧美一区二区久久久| 久久久久国产精品麻豆| 一级片手机在线观看| 国产日产欧美一区二区三区| 丰腴饱满的极品熟妇| 久久久久久久久伊人| 国产成人福利在线| 国产精品三级视频| 波多野结衣喷潮| 亚洲精品欧美专区| 国产乡下妇女做爰毛片| 欧美日韩在线视频首页| 丰满人妻老熟妇伦人精品| 91福利视频久久久久| 依依成人在线视频| 欧美一区二区成人| 日本精品久久久久| 亚洲一级黄色片| 美女羞羞视频在线观看| 欧美激情精品在线| 国产高清不卡| 国产精品久久久久久久一区探花| 日韩免费大片| 97人人模人人爽人人喊38tv| 乱亲女h秽乱长久久久| 欧美日韩精品免费观看视一区二区| 精品一区二区三区中文字幕老牛| 亚洲欧洲另类精品久久综合| 欧美精品偷拍| 男人天堂999| 精品在线观看视频| 99久久免费看精品国产一区| 国产精品欧美久久久久一区二区| 四虎永久免费在线| 欧美日韩国产精品一区二区三区四区| 波多野结衣视频在线观看| 欧美一区二区三区婷婷月色| 午夜成人免费影院| 日日噜噜噜夜夜爽亚洲精品| 丁香花在线高清完整版视频| 国产精品18久久久久久麻辣| 免费观看亚洲天堂| 欧美一级爱爱| 欧美人成网站| 日本美女高潮视频| 成人ar影院免费观看视频| 性欧美精品男男| 亚洲国产一区视频| 在线观看免费视频a| 亚洲国产成人精品女人久久久| av在线天堂播放| 午夜精品久久久99热福利| 精品69视频一区二区三区| 精品国产综合| 亚洲国产一区二区在线观看 | 国产一区二区不卡在线| 3d动漫精品啪啪一区二区下载| 亚洲欧美激情在线| 青青草视频在线观看免费| 精品国产一二三| 欧美精品hd| 国产精品福利观看| 丝袜美腿综合| 国产美女作爱全过程免费视频| 久久国产精品色| 国产免费一区二区三区网站免费| 亚洲高清在线精品| a级片在线免费看| 中文字幕视频一区二区在线有码| 欧美13videosex性极品| 成人羞羞视频免费| 在线国产一区二区| 欧美美女一级片| 国产喂奶挤奶一区二区三区 | 在线精品视频一区二区| 天天操天天插天天射| 九九久久综合网站| 在线成人免费| 制服诱惑一区| 美女视频黄久久| www.日本高清视频| 在线影视一区二区三区| 肉丝一区二区| 91sa在线看| 精品国产导航| 久久这里只有精品23| 国产精品亚洲第一区在线暖暖韩国| www.xx日本| 欧美人狂配大交3d怪物一区 | 中文字幕亚洲综合久久菠萝蜜| 国产黄色免费视频| 国产亚洲免费的视频看| 精品91久久| 日韩啊v在线| 日产欧产美韩系列久久99| 亚洲一区二区三区日韩| 色av成人天堂桃色av| 国产小视频免费在线观看| 欧美有码在线视频| 国产亚洲一卡2卡3卡4卡新区| 任你操这里只有精品| 久久精品视频免费| 国产一卡二卡三卡| 中文字幕国产精品久久| 亚洲成人高清| 国产精品8888| 成人午夜电影小说| 中文字幕亚洲精品在线| 精品中文字幕久久久久久| 都市激情综合| 亚洲国产日韩综合一区| 精品在线一区二区| 免费毛片在线播放免费| 亚洲国产精品久久精品怡红院| 制服丝袜专区在线| 亚洲精品成人a8198a| 精品一区二区三区影院在线午夜| 农村妇女精品一区二区| 日韩av在线网站| 国产精品字幕| 超碰97在线看| 99热国产精品| 亚洲无码精品在线观看| 久久夜精品香蕉| 精品av导航| 午夜欧美福利视频| 最近日韩中文字幕| 亚洲经典一区二区三区| 欧美亚洲视频在线观看| 久久一区二区中文字幕| 亚洲视频天天射| 日本精品视频一区二区三区| 成人短视频在线| 鲁丝片一区二区三区| 麻豆精品在线观看| 日本特黄特色aaa大片免费| 亚洲无av在线中文字幕| 日韩激情精品| 国产精品亚洲αv天堂无码| 17c精品麻豆一区二区免费| 黄片毛片在线看| 国产精品高清在线观看| 欧美视频日韩| 国产一二三四区在线| 精品国产乱码久久久久久夜甘婷婷 | 日本xxxx人| 国产精品一区二区三| 夜夜嗨网站十八久久| 日韩av毛片在线观看| 日韩国产一区三区| 欧美电影院免费观看|