2022年-C#中高級開發工程師面試題【消息隊列篇】

心之所向,勇往直前!
簡單歸納消息隊列相關的面試題

正文

   1. MQ的作用是什麼?

     解耦、異步、削峯

 

   2. 如何保證消息隊列的冪等性?

    a. 消費操作時可以先校驗數據是否重複再寫入

    b. 數據表設置唯一索引

    c. 丟到redis裏(分佈式鎖)

 

   3. 如何保證消息隊列的可靠性?

    a. Confirm模式/啓用事務

    b. 啓用持久化

    c. ACK應答機制

 

   4. 你是如何解決死信問題的?

     a. Rabbitmq可以設置死信交換機

    b. 可以自行實現一個緩存區,將死信消息先丟到緩存區,再跑定時任務檢測重新發送

 

   5. 什麼情況下消息會進入死信隊列?

     a. 消息被拒收

     b. 消息過期

     c. 隊列最大長度滿了

 

   6. 怎麼實現延時隊列?

     使用TTL + 死信隊列實現

 

   7. 設置TTL的方式有幾種,分別是什麼

     有兩種方式,基於隊列設置、基於消息設置。如果同時使用了兩種方式,則優先時間最小的

 

   8. 如何保證消息的順序消費?

     出現亂序的可能是1個queue有多個consumer,或者只有1個consumer時使用了多線程處理

    a. 保證一個queue只有1個消費者

    b. 如果存在多個消費者,就拆分多個queue將屬於同一個業務id的操作推送到1個queue,以此確保每個queue都是隻有1個消費者。

 

   9. 出現消息大量積壓如何處理?

     a. 可以增加多個consumer進行消費

    b. 

 

 

結語

  本篇到此結束,如果有任何疑問或者指正,請發表在評論區。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章