哈喽!大家好,我是小奇,一位不靠譜的程式員
小奇打算以輕松幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新,可以微信搜尋【小奇JAVA面試】第一時間閱讀,回複【資料】更有我為大家準備的福利喲!
文章目錄
- 一、前言
- 二、面試
- 三、RabbitMQ怎麼實作消費的可靠投遞
- 四、總結
一、前言
RabbitMQ我們經常的使用,但是它有很多進階的特性我們也需要熟練的掌握才能應對現實場景中複雜的業務邏輯。
二、面試
面試官:小奇是吧,我們開始面試吧
我:快點吧,早就饑渴難耐了
面試官:有用過RabbitMQ嗎
我:用過
三、RabbitMQ怎麼實作消費的可靠投遞
面試官:RabbitMQ消息生産者發送消息後怎麼知道消費者有沒有收到消息呢
我:生産者可以通過setConfirmCallback方法設定回調函數,判斷方法中的ack,如果ack為true則表示發送成功,如果ack為false則表示發送失敗,這裡是生産者向路由器發送消息的時候失敗。
我:我們還可以通過setReturnCallback方法設定回調函數,這裡是路由器向隊列發送消息失敗,比如該條消息根據路由鍵沒有找到要發送到哪個隊列中去。
面試官:那消費端這裡怎麼判斷是否收到消息了呢
我:消費端這裡可以通過channel.basicAck()方法來确認收到消息。
面試官:那消費端這裡處理收到的消息的時候發生異常怎麼辦?
我:可以使用channel.basicNack()方法來拒絕消息,讓MQ重新發送消息
面試官:我們消費端每次處理完消息都需要手動确認消息嗎
我:可以配置手動确認,也可以配置自動确認消息,在配置檔案中配置
面試官:那一共有幾種确認方式呢
我:一共有三種确認方式。
1、自動确認:acknowledge=none
2、手動确認:acknowledge=manual
3、根據異常情況确認:acknowledge=auto
面試官:可以呀小夥子,這塊掌握的不錯
我:還行還行,都是日常的積累
面試官:小夥子真厲害啊,一下子就把RabbitMQ怎麼實作消費的可靠投遞講明白了,你面試通過了,明天上崗吧
我:啊,這麼急嗎,我後面還有好多東西沒有講呢。
面試官:不着急,進來了以後慢慢聽你講,加班讓你跟我講
我:啊。。。這也太難了吧
四、總結
這裡關于RabbitMQ還沒有整理完畢,文章後面持續更新,建議收藏。
文章中涉及到的指令大家一定要像我一樣每個都敲幾遍,隻有在敲的過程中才能發現自己對指令是否真正的掌握了。
如果覺得我的文章還不錯的話就點個贊吧,另外可以微信搜尋【小奇JAVA面試】閱讀更多的好文章,擷取我為大家準備的資料。