16 RabbitMQ怎麼保證投遞消息不丟失

RabbitMQ一般情況下很少丟失,但是不能排除意外,爲了保證我們自己的系統高可用,我們必須做好完善的措施,保證系統的穩定性。 1,消息持久化 2,ACK確認機制 3,設置集羣鏡像模式 4,消息補償機制 第一種: 消息持久化 RabbitMQ 的消息默認存放在內存上面,如果不特別聲明設置,消息不會持久化保存到硬盤上面的,如果節點重啓或者意外crash掉,消息就好丟失。所以也要對消息進行持久化處理:1,Exchange 設置持久化,2,Queue進行持久化,3,Message持久化發送: 發送消息設置發送模式deliveryMode=2,代表持久化消息。 第二種: Ack確認機制 多個消費者同時收取消息,比如消息接收到一半的時候,一個消費者死掉了(邏輯複雜時間太長,超時了或者消費被停機了或者網絡斷開鏈接),爲了保證消息不丟失就需要使用 Message acknowledgment機制,就是消費端消費完成要通知服務端,服務端纔會把消息從內存刪除。 這樣就解決了,及時一個消費者出了問題,沒有同步消息給服務端,還有洽談的消費端去消費,保證了消息不丟的case. 第三種:設置集羣鏡像模式: RabbitMQ有三種部署模式分別是:1,單節點模式: 最簡單的情況,非集羣的模式,節點掛了,消息就不能用了。業務可能癱瘓只能等待。 2,普通模式: 默認的集羣模式,某個節點掛了,改節點上的消息不能用,有影響的業務癱瘓,只能等待節點恢復重啓(必須持久化消息情況下)。 3,鏡像模式:把需要的隊列做成鏡像隊列,存在於多個節點,屬於RabbitMQ的HA方案 第四種:消息補償機制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章