RabbitMQ Exchanges - 1
了解Message Queue 的運作概念與方式
AMQP Messaging 標準
RabbitMQ 是基於 AMQP 標準所實現的網路層級的協議,其伺服器端用 Erlang 語言編寫,AMQP 是一個網路層級的協議,其目標是對於消息的排序、路由(包括點對點和訂閱 - 發布模式)、保持消息可靠性與保證安全性。
其中目前的 RabbitMQ 版本支援 AMQP 的 0-9-1 版本。
Message Queue 的運作概念與方式
Message Queue 的運作方式是透過訊息發送者先把資訊丟進 Exchange 中,接著透過 message broker 從 Exchange 送到與其對應的 binding(或 routing key) 的貯列中。以生活化的例子來看就是 Exchange 就好像我們的 信箱,而 binding 則是信件(message)透過結合的機制,可能是透過姓名,或是透過信件內容做分類(例如某人的姓名,或是關注的廣告貯列),訊息接收者從貯列中取得資訊(送到指定的人的手中)。
因為網路是有機會發生錯誤的,如果發送資訊的過程中出錯,例如: RabbitMQ 頻道關閉,連線中斷,TCP 連線失敗等等,那我要怎麼確認這個貯列最後有沒有送訊息給到指定的人呢?
這個時候,message broker 就會等待訊息接收者所發送 ack(nowledgement) 來確認該訊息已被接受和處理完成了,這筆 transaction 完成。
那最後訊息會不會消失?就要看收到 acknowledgement 後, message broker 會根據設定決定要不要重回貯列中排序或是移除訊息。