0.寫在前面
RabbitMQ 是一個訊息代理:它接受和轉發訊息。你可以把它想象成一個郵局:當你把你想要投寄的郵件放在一個郵箱裡時,你可以確定收信人先生或女士最終會把郵件寄給你的收件人。在這個類比中,RabbitMQ是一個郵箱、一個郵局和一個郵遞員。
RabbitMQ 與郵局的主要區別在於它不處理紙張,而是接收、儲存和轉發二進位制資料塊——訊息。
1.Producer
生產就是傳送,傳送訊息的程式是生產者。
2.Queue
佇列是位於 RabbitMQ 內的郵箱的名稱。儘管訊息流經 RabbitMQ 和應用程式,但它們只能儲存在佇列中。佇列只受主機的記憶體和磁碟限制,它本質上是一個大的訊息緩衝區。許多生產者可以向一個佇列傳送訊息,許多消費者可以嘗試從一個佇列接收資料。
3.Consumer
消費與接受有著相似的含義。消費者是一個主要等待接收訊息的程式。
4.Exchange
交換器必須確切地知道如何處理接收到的訊息。它應該附加到特定的佇列嗎?它應該附加到許多佇列中嗎?或者它應該被丟棄。這些規則由 Exchange Types 型別定義。
Exchange Types:direct, topic, headers,fanout
複製程式碼
5.Bindings
繫結是用於將訊息路由到佇列的交換規則。為了指示Exchange E將訊息路由到佇列Q,Q必須繫結到E。某些 Exchange Type
可以使用一個可選的路由鍵屬性。routing key
的目的是指定這個訊息的路由規則。換句話說,routing key
鍵就像一個過濾器。
如果AMQP訊息不能路由到任何佇列(例如,因為它釋出到的交換器沒有繫結),那麼它要麼被刪除,要麼返回給釋出者,這取決於釋出者設定的訊息屬性。
6.Routing Key
生產者在將訊息傳送給 Exchange 的時候,一般會指定一個 routing key,來指定這個訊息的路由規則,而這個 routing key 需要與 Exchange Type 及 binding key 聯合使用才能最終生效。在 Exchange Type 與 binding key 固定的情況下(在正常使用時一般這些內容都是固定配置好的),我們的生產者就可以在傳送訊息給 Exchange 時,通過指定 routing key 來決定訊息流向哪裡。RabbitMQ 為 routing key 設定的長度限制為255 bytes。