JAVA高级开发工程师面试系列——RocketMQ
消息中間件對比
為什么選擇RocketMQ
性價比,社區活躍度
性價比之“性”:
性能:阿里支撐,經受住淘寶,天貓雙11重重考驗;性能高;可靠性好;可用性高;易擴展
功能:功能完善,我們需要的功能,基本都夠滿足,如:事務消息,消息重試,私信隊列,定時消息等;
易用,跨平臺:跨語言,多協議接入(支持HTTP, MQTT, TCP協議,支持Restful風格HTTP收發消息)
性價比之“價”:
錢能解決的問題,一般都不是問題,所以免費服務不能滿足的,適當的花錢購買所需服務是值得的,早期阿里引進的IOE,那我們引進的就是RocketMQ的阿里云和VIP服務;
當然,錢解決不了的問題,那必然是問題,IOE的高消費,不如去IOE尋找技術方面的突破,
社區活躍度:
技術突破就分能突破的和不能突破的,需要社區支持,社區不活躍,版本問題不改善,自己修復問題不僅耗時,而且未必正確能夠經受考驗
RocketMQ隊列消費謹記
一個消費者可以消費多個隊列,但一個隊列只能由一個消費者消費
RocketMQ消息順序和重復消費問題
RocketMQ特性
順序性
消息過濾
消息持久化
消息回溯
大量消息堆積
定時消息
消息重試
RocketMQ廣播與集群區別
RocketMQ高可用
RocketMQ分布式事務
RocketMQ有哪些坑
RocketMQ的namesrv全掛掉是否影響通信
RocketMQ的生產者和發送者Reblance
RocketMQ隊列中的消息有序,能否保證消費者消費也有序
必須是順序消費才可以,并行消費無法做到有序。是否受網絡影響,順序消費也有可能無序,待測
RocketMQ怎么設置消息是從Master消費還是從Slaver消費。Master和Slaver同時在線,消息是否會從Master消費一遍,然后再從Slaver消費一遍?
RocketMQ默認端口
namesrv默認端口9876,broker默認端口10911,VIP默認端口10909,每個broker啟動后默認占用兩個端口10911和10913或10912和10914
RocketMQ同一臺機,啟動多個生產者實例或多個消費者實例,需要設置不同的實例名稱
RocketMQ無論何種情況(發送到單個隊列,順序消費或并行消費;或者發送到多個隊列,順序消費或者并行消費),延時/定時消息總是遲于非延時/非定時消息到達broker,延時/定時消息是在延時/定時時間過后才被投放到broker,也即延時/定時消息不會影響非延時/非定時消息到達broker。如果等待所有消息全部到達broker之后,才啟動消費者,這個延時/定時是否還有意義?
RocketMQ在不考慮網絡影響的情況下,只有將同一ID的消息發送到同一隊列上,并且消費端使用順序消費,才能保證消息被順序消費。即生產者不使用MessageQueueSelector或者消費者不使用MessageListenerOrderly的任何一種情況出現都不能保證消息被順序消費,考慮網絡影響的情況待測。
RocketMQ消費端消息ack是ack到本地隊列,然后由本地隊列登記后,再5秒鐘間隔上報到broker?
經測試:調大上報時間,本地ack之后(返回CONSUME_SUCCESS,且#Diff > 0),立即停掉消費端,過許久,發現仍#Diff > 0,證明消費端確實還沒有上報ack進度給broker;重啟消費端之后,因#Diff > 0,消息又被重新消費了一次,證明之前broker確實沒收到ack,也由此可證明消費端ack是先ack到本地隊列,停掉消費端,本地隊列的所有信息都沒有了,也就因此遲遲不會將#Diff變為0。
總結
以上是生活随笔為你收集整理的JAVA高级开发工程师面试系列——RocketMQ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Android] 单独编译生成boot
- 下一篇: gprinter佳博打印机android