如何選擇RabbitMQ的訊息儲存方式?

2022-02-26 14:42:05 字數 1064 閱讀 3239

rabbitmq對於queue中的message的儲存方式有兩種方式:disc 和 ram。

如果採用disc,則需要對exchange/queue/delivery mode都要設定成 durable 模式。disc方式的好處是當rabbitmq失效了,message仍然可以在重啟之後恢復。

而使用ram方式,rabbitmq處理message的效率要高很多,ram和disc兩種方式的效率比大概是3:1。所以如果在有其它 ha(高可用) 手段保障的情況下,選用 ram 方式是可以提高訊息佇列的工作效率的。

如果使用ram方式,rabbitmq能夠承載的訪問量則取決於可用的記憶體數了。

rabbitmq使用兩個引數來限制使用系統的記憶體,避免系統被自己獨佔。

[,          ]}].

vm_memory_high_watermark:表示rabbitmq使用記憶體的上限為系統記憶體的40%。也可以通過absolute引數制定具體可用的記憶體數。當rabbitmq使用記憶體超過這個限制時,rabbitmq 將對訊息的發布者進行限流,直到記憶體占用回到正常值以內。

vm_memory_high_watermark_paging_ratio:表示當rabbitmq達到0.4*0.75=30%,系統將對queue中的內容啟用paging機制,將message等內容換頁到disk 中。

rabbitmq的記憶體使用情況可以通過「rabbitmqctl status」或者管理外掛程式中的web ui查詢。

各個記憶體條目的含義請參照:

當訊息傳送的速率超過了rabbitmq的處理能力時該怎麼辦?

rabbitmq會自動減慢這個連線的速率,讓client端以為網路頻寬變小了,傳送訊息的速率會受限,從而達到流控的目的。 使用」rabbitmqctl list_connections」檢視連線,如果狀態為「flow」,則說明這個連線處於flow-control 狀態。

用一張圖來做個總結:

如何選擇RabbitMQ的訊息儲存方式?

rabbitmq對於queue中的message的儲存方式有兩種方式 disc和ram。如果採用disc,則需要對exchange queue delivery mode都要設定成durable模式。disc方式的好處是當rabbitmq失效了,message仍然可以在重啟之後恢復。而使用ram方式...

如何選擇RabbitMQ的訊息儲存方式?

rabbitmq對於queue中的message的儲存方式有兩種方式 disc和ram。如果採用disc,則需要對exchange queue delivery mode都要設定成durable模式。disc方式的好處是當rabbitmq失效了,message仍然可以在重啟之後恢復。而使用ram方式...

RabbitMQ 如何保證訊息不丟失?

rabbitmq 如何保證訊息不丟失?rabbitmq一般情況很少丟失,但是不能排除意外,為了保證我們自己系統高可用,我們必須作出更好完善措施,保證系統的穩定性。下面來介紹下,如何保證訊息的絕對不丟失的問題,下面分享的絕對乾貨,都是在知名網際網路產品的產線中使用。1.訊息持久化 2.ack確認機制 ...