RabbitMQ的整個通信過程

一:根據上圖標註的序號來依次介紹每一步要做的事情:

1:生產者生產消息後,將消息發佈給交換器黑EX;

2:交換器黑EX根據路由規則將消息路由到隊列黑queue;

3:Broker再將隊列黑queue中的消息投遞給訂閱該隊列的消費者,或者是消費者從隊列黑queue中獲取消息;

4:給黑EX綁定一個備份交換器綠EX,當到達黑EX的消息不能被正確路由到任何隊列時,被髮送給備份交換器綠EX;

5:備份交換器綠EX根據路由規則將消息路由到備份隊列綠queue,存儲起來;

6:由於可以給消息設置過期時間,所以當隊列黑queue中的消息達到過期時間仍未被消費時,會被髮送到死信交換器紅EX中;或者發送給消費者的消息被消費者拒絕後,也會被髮送到死信交換器紅EX中;

7:死信交換器紅EX根據路由規則將消息路由到死信隊列紅queue,存儲起來;

二:根據上圖介紹可能涉及的知識點:

(1):當黑EX不能經過第2步將消息路由到任何隊列時,則將消息發送到備份交換器綠EX,並存儲到備份隊列中,之後在需要的時候再去處理;有關備份交換器的介紹可以點擊《備份交換器》

(2):可以設置消息在隊列中的過期時間,當消息達到黑queue中,如果在過期時間到了仍未被消費,則會經過第6步和第7步將消息發送到死信隊列紅queue中,後續可以分析死信隊列中的內容來分析當時遇到的異常情況;有關死信隊列的介紹可以點擊《死信隊列》

(3):消息達到黑queue後,最終會經過第3步被消費者消費;消費者消費消息有兩種模式:推和拉;有關消費模式的介紹可以點擊《消費者的消費模式》

(4):黑queue中存放的是生產者生產的消息,最終供消費者去消費;RabbitMQ有消息確認規則,發送給消費者的消息需要等到消費者明確給出迴應(確認或拒絕)後,纔會在隊列中做出相應的處理(從隊列中刪除或者保留在隊列中);所以隊列中的消息可以分爲兩部分,一部分是未發送給消費者的消息,二部分是已經發送給消費者消費,但是還未收到消費者回應的消息;有關消息隊列的介紹可以點擊《消息隊列》

(5):消費者消費黑queue中的消息後,需要給隊列一個迴應,從而讓隊列對消費的消息做出相應的處理,這個迴應可以是確認、拒絕,也可以是重發;有關消費者對消息的確認、拒絕和重發的介紹可以點擊《消費者對消息的確認、拒絕和重發》。

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