面試官: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還沒有整理完畢,文章後面持續更新,建議收藏。
文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。
如果覺得我的文章還不錯的話就點個贊吧