對RabbitMQ消息隊列的理解

一、RabbitMQ的消費模式有兩種,一種是推,一種是拉

推:RabbitMQ會將隊列中的消息推給消費者。

拉:消費者從隊列中主動拉取消息,但是每次只能拉取一條。

二:消息確認

當消費者無論通過推模式還是拉模式消費消息後,都應該給RabbitMQ一個確認消息,告訴RabbitMQ自己已經消費了消息,讓RabbitMQ從隊列中將消息刪除;當然了消費者也可以不給RabbitMQ回覆確認消息,這樣RabbitMQ的隊列會一直持有消息。

三:隊列中會有兩部分消息

第1部分:還未發送給消費者的消息;可以供任意消費者來消費。

第2部分:已經發送給消費者,但是還未收到消費者回復確認的消息;該部分消息不能再被其他消費者消費,只能等待它的消費者回應確認;或者消費者還沒回應就斷開了和隊列的連接,則該部分消息會變成第1部分的消息。

四:消息消費的過程

1:假如初始狀態下隊列中有15個消息,這15個消息都屬於第1部分,如下圖:

2:現在消費者A消費了兩個消息:1號和2號;但是沒有給隊列回覆確認消息,則1號和2號在隊列中就屬於第2部分,不能再被其他消費者消息,只能等待消費者A迴應確認,如下圖:

3:假如又來了一個消費者B,需要消費兩個消息,則消費者B只能從隊列中消費3號和4號,在回覆確認消息之後,3號和4號從隊列中刪除,如下圖:

4:如果消費者A一直沒有給RabbitMQ回覆確認消息,並斷開了和RabbitMQ的連接,則1號和2號消息會從第2部分變成第1部分,即可以被其他消費者消費,如下圖:

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