面試官:RabbitMQ怎么實現消費端限流

      網友投稿 1024 2025-04-04

      哈嘍!大家好,我是小奇,一位不靠譜的程序員


      小奇打算以輕松幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧

      文章持續更新

      一、前言

      RabbitMQ有很多高級特性,一般項目用不到,但是總有面試官會問到,被問到的時候我們要假裝這些對我們來說就是小意思一樣。

      二、面試

      面試官:小奇是吧,你先做一個自我介紹吧

      我:面試官您好,我畢業于XXX,我之前在XXX工作,我精通XXX,總之一句話,我就是優秀,你問就完了。

      面試官:行,你的自我介紹很強硬啊,那我看看你到底有沒有過硬的實力

      我:是騾子是馬拉出來溜溜

      三、RabbitMQ怎么實現消費端限流

      面試官:好,那我先問你一個場景題,比如我們公司現在做了一個秒殺系統,在活動當天用戶下單太多了,造成消費端崩潰了,這種情況我們該怎么處理呢

      我:好說呀,多買幾臺服務器,多搭建幾臺消費端的服務,減緩服務端的壓力,這樣不就沒有問題了嗎。

      面試官:額。。。你這么說確實可以解決,實不相瞞我們老板特別摳。。。不舍得買更多的服務器,就想讓我們一臺服務器搞定

      我:???光讓馬兒跑,不讓馬兒吃草,那特么能行啊,跟你們老板說,讓他自己出來頂著消費端的壓力吧,他不是不舍得花錢嗎,等秒殺的時候讓他去用戶那里搗亂,讓用戶不能夠同一時間下單不就行了。

      面試官:哎呀不行呀,我們也想過給用戶搗亂,但是老板不讓,老板說必須讓用戶在最短的時間內都完成下單

      我:可以啊,那就使用MQ,讓客戶端下單后將下單信息放入消息隊列中,然后讓消費端去處理唄。

      面試官:哎呀我們就是這么弄的,但是消費端總是崩潰

      我:你們消費端服務器配置怎么樣?

      面試官:嗯。。消費端服務器配置是半核CPU、1G運行內存空間、10G磁盤空間

      我: 半核? 你特么在逗我,另外半個CPU讓別人掰走了?

      面試官:嘿嘿,情況就是這么個情況,事情就是這么個事情,反正公司就是窮困潦倒,等你進來了我再慢慢跟你講,你現在先幫我想一個解決方案,我用來應付一下老板

      我:那就在消費端實現限流吧。

      面試官:怎么實現呢?

      我:使用channel.basicQos(int prefetchSize, int prefetchCount, boolean global)方法來設置限流的配置。

      prefetchSize:表示消息的大小(0的話表示不限制大小)

      prefetchCount:表示消息的數量

      面試官:RabbitMQ怎么實現消費端限流

      global:true表示該通道下的所有消費者都適用這個策略,而false表示只有當前這一個消費者適用這個策略。

      如圖,這里我們channel.basicQos(0,1,false);表示不限制消息的大小,但是限制消息的數量,一次只能給消費者發送一條消息。

      面試官:為什么不限流的話會將消費端搞掛掉呢

      我:假如現在小明的媽媽有10個餃子給小明吃,小明叫來了9個同學,然后他們一共10個人,一人一個餃子都是一口就吃完了沒有任何問題,但是今天就小明一個人,總不能10個餃子一下塞到小明的嘴里面吧,這樣直接將小明噎死了。

      面試官:那怎么解決呢

      我:現在小明先吃一個餃子,等小明吃完了這一個餃子后告訴他媽,說我吃完了,然后他媽再給他一個餃子吃,這樣的話也是可以吃完10個餃子的,并且小明沒有事。

      面試官:我看限流的參數還有數據大小是干什么的

      我:假如現在小明媽媽為了讓小明一口就吃完十個餃子,他包了一個特別大的餃子,有一斤重,這個時候跟小明說還是一個餃子,一口悶吧,這個時候照樣將小明噎死了,所以數據大小也是要限制的。

      面試官:那隊列怎么知道消費者消費完了一條消息,要給他再發送一條消息呢

      我們要配置消費端手動確認,當我們消費端消費完消息后手動確認消息,這個時候隊列就認為整個消費流程走完了,就開始下一個信息的發送了。

      開啟手動確認配置

      代碼中手動確認。

      這里手動確認有兩個參數,第一個是tag編號,就是這個消息的一個編號,第二個參數為是否確認多條,true的話就是確認多條消息,false的話就是只確認這一條消息,一般我們都是false。

      面試官:可以呀小伙子,有點東西

      我:請你不要迷戀哥,哥只是一個傳說。。。

      面試官:小伙子真厲害啊,一下子就把RabbitMQ消費端限流講明白了,你面試通過了,明天上崗吧

      我:啊,這么急嗎,我后面還有好多東西沒有講呢。

      面試官:不著急,進來了以后慢慢聽你講,加班讓你跟我講

      我:啊。。。這也太難了吧

      四、總結

      這里關于RabbitMQ還沒有整理完畢,文章后面持續更新,建議。

      文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。

      如果覺得我的文章還不錯的話就點個贊吧

      RabbitMQ

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:微軟正在研發用于現代移動設備下一代Office全新應用(微軟office移動端)
      下一篇:wps office里怎么排序
      相關文章
      中文字幕亚洲码在线| 亚洲麻豆精品果冻传媒| 亚洲国产成人99精品激情在线| 91在线亚洲精品专区| 国产成人亚洲精品青草天美| 亚洲一区二区三区无码中文字幕| 亚洲精品tv久久久久| 亚洲高清视频一视频二视频三| 免费在线观看亚洲| 九月婷婷亚洲综合在线| 日本中文一区二区三区亚洲| 国产精品亚洲一区二区三区久久| 国产产在线精品亚洲AAVV| 大胆亚洲人体视频| 亚洲av麻豆aⅴ无码电影 | 亚洲精品无码av天堂| 亚洲第一网站男人都懂| 久久亚洲2019中文字幕| 91麻豆国产自产在线观看亚洲| 亚洲熟妇av一区二区三区漫画| 国产亚洲福利精品一区| 亚洲av午夜福利精品一区人妖| 亚洲国产精品久久久久| 亚洲精品日韩中文字幕久久久| 亚洲小说区图片区| 一本色道久久综合亚洲精品蜜桃冫| 亚洲欧洲无码一区二区三区| 亚洲AV日韩AV一区二区三曲 | 7777久久亚洲中文字幕蜜桃 | 亚洲欧洲尹人香蕉综合| 亚洲av永久无码精品天堂久久| 亚洲中文字幕乱码AV波多JI| 看亚洲a级一级毛片| 亚洲高清无码综合性爱视频| 亚洲熟女一区二区三区| 亚洲丁香色婷婷综合欲色啪| 亚洲精品视频专区| 99亚偷拍自图区亚洲| 国产成人亚洲午夜电影| 亚洲伊人久久精品影院| 亚洲国产精品lv|