您好,登錄后才能下訂單哦!
這篇文章主要介紹RabbitMQ面試題有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
RabbitMQ是消息中間件,采用的erlang語言,而這個語言本身就是支持并發(fā)的。
在項目中運用的場景是我們的訂單數(shù)據(jù)修改時,需要把訂單的狀態(tài)同步給第三方系統(tǒng),在這個對接過程,我們將消息發(fā)送到RabbitMQ上,而RabbitMQ再把消息推給第三方系統(tǒng)。
幾種模式
1.單發(fā)送單接收
2.單發(fā)送多接收
3.發(fā)布訂閱模式
4.按topic發(fā)送接收
如何保證數(shù)據(jù)不丟失
在整個發(fā)送消息,消費消息的過程中,可能三個地方存在問題:
1.發(fā)送時,消息由于網(wǎng)絡(luò)問題,半路搞丟。
解決方法:
a.同步。采用事務管理,開啟事務,在發(fā)送消息的時候,如果mq沒有接受到消息,則拋出異常,本地捕獲異常并重試。
b.異步。寫入時可以回調(diào)本地接口,確認機制。(建議使用)
2.MQ服務器本身的問題。如果他還沒來得及把消息發(fā)送消費端就掛了,這個時候消息就丟失了。
解決方法:(持久化操作)
a.創(chuàng)建隊列時,設(shè)置其為持久化。
b.消息的deliveryMode為2。
3.在消費的時候,消息由于網(wǎng)絡(luò)問題,半路搞丟。
解決方法:消費者在接收到消息先執(zhí)行業(yè)務代碼,等結(jié)束時,再告訴服務器已經(jīng)執(zhí)行完,再執(zhí)行刪除操作。
如何避免數(shù)據(jù)重復消費
這個RabbitMQ認為不是服務器的問題,而是我們的代碼問題。
所以我們的解決方法是在消費端進行控制,擁有一個業(yè)務id,人工去重。
以上是“RabbitMQ面試題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。