「rabbitmq」的基礎

MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。

MQ是消費-生產者模型的一個典型的代表,一端往消息隊列中不斷寫入消息,而另一端則可以讀取隊列中的消息。

1、隊列、生產者、消費者

隊列是RabbitMQ的內部對象,用於存儲消息。生產者生產消息並投遞到隊列中,消費者可以從隊列中獲取消息並消費。 多個消費者可以訂閱同一個隊列,這時隊列中的消息會被平均分攤給多個消費者進行處理,而不是每個消費者都收到所有的消息並處理。

2、Exchange、Binding

剛才我們看到生產者將消息投遞到隊列中,實際上這在RabbitMQ中這種事情永遠都不會發生。實際的情況是,生產者將消息發送到Exchange,再通過Binding將Exchange與Queue關聯起來。

3、Exchange Type、Bingding key、routing key

在綁定(Binding)Exchange與Queue的同時,一般會指定一個binding key。在綁定多個Queue到同一個Exchange的時候,這些Binding允許使用相同的binding key。

生產者在將消息發送給Exchange的時候,一般會指定一個routing key,來指定這個消息的路由規則,生產者就可以在發送消息給Exchange時,通過指定routing key來決定消息流向哪裡。

RabbitMQ常用的Exchange Type有三種:fanout、direct、topic。

fanout:把所有發送到該Exchange的消息投遞到所有與它綁定的隊列中。

direct:把消息投遞到那些binding key與routing key完全匹配的隊列中。

topic:將消息路由到binding key與routing key模式匹配的隊列中

「rabbitmq」的基礎


分享到:


相關文章: