MQ訊息佇列_RabbitMQ
MQ訊息佇列中介軟體— Rabbit MQ
訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,反之亦然。訊息(Message)是指在應用間傳送的資料。訊息可以非常簡單,比如只包含文字字串,也可以更復雜,可能包含嵌入物件。是用於業務解耦的情況,其它常見場景包括最終一致性、廣播、錯峰流控等等。訊息傳送與接受的雙方遵守這個協議可以實現非同步通訊。
https://blog.csdn.net/cdefggg/article/details/88375249
官方模擬器:
路由轉發。生產者Producer在傳送訊息時,都需要指定一個RoutingKey和Exchange,Exchange收到訊息後可以看到訊息中指定的RoutingKey,再根據當前Exchange的ExchangeType,按一定的規則將訊息轉發到相應的queue中去。
1、 Message Quene是應用程式對應用程式的通訊方法。非同步RPC的主要手段之一。不需要直接呼叫彼此來通訊。
2、Rabbit MQ(開源訊息代理)是實現AMQP(應用層開放標準advanced message queuing protocal提供統一訊息服務)協議的MQ產品。
3、訊息的生產者Producer--->訊息佇列----->訊息的消費者
4、 安裝 Rabbit MQ:windows計算機名用英文,關閉安全軟體:
1)Erlang環境(程式語言): opt_win64_17.3.exe
2)按照RabbitMQ服務: rabbitmq-server-3.4.1.exe
5、安裝完測試:開啟 rabbitMQ command prompt
輸入rabbitmq-plugins enable rabbitmq_management啟動後臺服務軟體,瀏覽器輸入127.0.0.1:15672 ,使用者名稱/密碼:guest/guest
6、overview:顯示訊息佇列,節點,路徑,埠( AMQP埠5672,叢集埠25672,web管理埠15672)
connections:
channels:資料通道(持久化的佇列在管理頁面可以看到有個“D”,durable為true)
exchanges:交換機,型別,可以新增交換機。
點選Exchange的Name可進入到Exchange的詳情頁面,在裡面將Exchange與Queue進行Binding。
測試: 點進交換器之後有一欄是Publish message, 傳送成功後切換到Queues檢視是否收到訊息,點選ls佇列進去檢視, 展開Get message選項,點選GetMessage(s)就能得到訊息了。
測試: https://blog.csdn.net/qq_41097820/article/details/88793329
quenes:佇列
Message
- Ready: 佇列中等待消費的訊息
- Unacked:佇列中等待被確認的訊息(此時訊息已到達消費者,但是未被確認)
- Total:佇列中訊息總數
admin:新增使用者等,Tags指角色;新增virtual host(關聯到使用者access,起隔離作用,每個vhost本質上就是一個mini版的rabbitmq伺服器,擁有自己的佇列、交換機、繫結和許可權機制)。
7、MQ中的最小物件:訊息=訊息描述符+使用者資料,佇列定義的長度制約訊息的長度。佇列:先進先出FIFO,對遠端佇列的訪問需要使用”通道“。包含關係:訊息<佇列<佇列管理器,三者組合唯一確定一個訊息。
一般一個Message有兩個部分:payload(有效載荷)和label(標籤),payload顧名思義就是傳輸的資料,label是exchange的名字或者說是一個tag,它描述了payload,而且RabbitMQ也是透過這個label來決定把這個Message發給哪個Consumer
8、通道:應用在佇列管理器與佇列管理器之間的,單向的點對點的通訊連線:
-
單一方向;
-
通常成對使用;
如果要在 佇列管理器與佇列管理器之間實現訊息傳輸,必須在兩個佇列管理器上都要定義相應的通道。
9、RabbitMQ中生產者將訊息傳送到Exchange(交換器),由Exchange將訊息路由到一個或多個Queue中(或者丟棄)。RabbitMQ中透過Binding將Exchange與Queue關聯起來,這樣RabbitMQ就知道如何正確地將訊息路由到指定的Queue了。
10、對於rabbitmq來說,一個broker可以看成一個rabbitmq服務節點,,或者服務例項。也可以將一個broker看做一臺rabbitmq伺服器
11、rabbitmq有一個最大記憶體閾值,可以透過配置來實現。當接收的訊息達到最大閾值時,rabbitmq不會再接收訊息,並進入阻塞狀態。rabbitmq有一個記憶體換頁閾值,當達到換頁閾值時,將當前記憶體內的訊息放入到磁碟內,而此時會區分持久化訊息和非持久化訊息。持久化訊息因為在接收到訊息後就已經存入磁碟,所以在換頁時不會重複存入磁碟。此時只會將非持久化訊息存入到磁碟內。
12、當記憶體使用超過配置的閾值或者磁碟剩餘空間低於配置的閾值時,rabbitmq會出現告警。此時會暫時阻塞客戶端連線(顯示blocked),並停止接收客戶端發來的訊息,以避免伺服器崩潰,客戶端與服務端的心跳檢測也會失效。
13、傳送可靠性:確保訊息成功傳送到broker
At most once:最多一次,訊息可能會丟失,但不會重複傳輸
At least once:最少一次,訊息不會丟失,但可能重複傳輸
Exactly once:恰好一次,保證每條訊息都被傳輸到broker且僅傳輸一次
RabbitMQ支援:At most once和At least once
14、abbitMQ的六種工作模式:
-
1、Work queues
-
2、Publish/subscribe
-
3、Routing
-
4、Topics
-
5、Header 模式
-
6、RPC
15、Exchange Types有 fanout、direct、topic、headers這四種型別:
*queue對load balance的處理是完美的。對於多個Consumer來說,RabbitMQ 使用迴圈的方式(round-robin)的方式均衡的傳送給不同的Consumer。
fanout型別:廣播模式,Exchange路由規則非常簡單,它會把所有傳送到該Exchange的訊息路由到所有與它繫結的Queue中。
direct型別: Exchange路由規則也很簡單,它會把訊息路由到那些binding key與routing key完全匹配的Queue中,binding key == routing key。(在繫結(Binding)Exchange與Queue的同時,一般會指定一個Binding key;但Binding key並不是在所有情況下都生效,它依賴於Exchange Type)
topic message型別:binding key like routing key, 其中routing key中可以帶 * 和 # 來做模糊匹配, “*”用於匹配一個單詞,“#”用於0~N個單詞.
headers型別: Exchange不依賴於routing key與binding key的匹配規則來路由訊息,而是根據傳送的訊息內容中的headers屬性進行匹配。
*:Virtual host:即虛擬主機
當多個不同的使用者使用同一個RabbitMQ server提供的服務時,可以劃分出多個vhost,每個使用者在自己的vhost建立exchange/queue
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7970627/viewspace-2676779/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊息佇列(MQ)佇列MQ
- [訊息佇列]RabbitMQ佇列MQ
- RabbitMQ訊息佇列MQ佇列
- MQ 訊息佇列 比較MQ佇列
- 訊息佇列mq總結佇列MQ
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- 訊息佇列之RabbitMQ佇列MQ
- rabbitmq訊息佇列原理MQ佇列
- SpringBoot:初探 RabbitMQ 訊息佇列Spring BootMQ佇列
- RabbitMQ訊息佇列(五):Routing 訊息路由MQ佇列路由
- Spring Boot:使用Rabbit MQ訊息佇列Spring BootMQ佇列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列
- RabbitMQ 訊息佇列之 Exchange TypesMQ佇列
- RabbitMQ訊息佇列(二):”Hello, World“MQ佇列
- 如何實現MQ佇列訊息監控MQ佇列
- 【訊息佇列】RabbitMq-宣告佇列與交換機佇列MQ
- Laravel5.6 整合 RabbitMQ 訊息佇列LaravelMQ佇列
- RabbitMQ .NET訊息佇列使用入門(五)【RabbitMQ例子】MQ佇列
- 【訊息佇列】RabbitMq-交換機模型佇列MQ模型
- 訊息佇列的使用場景之RabbitMQ佇列MQ
- RabbitMQ訊息佇列(九):Publisher的訊息確認機制MQ佇列
- RabbitMQ .NET訊息佇列使用入門(四)【RabbitMQ用法大全】MQ佇列
- RabbitMQ訊息佇列(六):使用主題進行訊息分發MQ佇列
- 訊息佇列Rabbitmq的交換器型別佇列MQ型別
- RabbitMQ訊息佇列-Centos7下安裝RabbitMQ3.6.1MQ佇列CentOS
- 訊息佇列系列一:訊息佇列應用佇列
- 訊息佇列MQ最全詳解(萬字圖文總結)佇列MQ
- 訊息佇列MQ應用場景及主流框架對比佇列MQ框架
- RabbitMQ高階之訊息限流與延時佇列MQ佇列
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- 架構設計之NodeJS操作訊息佇列RabbitMQ架構NodeJS佇列MQ
- RabbitMQ學習(三)之 “訊息佇列高階使用”MQ佇列
- 2018-06-14: Java 訊息佇列之 RabbitMQ 使用Java佇列MQ
- RabbitMQ訊息佇列(三):任務分發機制MQ佇列
- 訊息佇列佇列
- 主流的訊息佇列MQ比較,詳解MQ的4類應用場景佇列MQ
- MQ系列8:資料儲存,訊息佇列的高可用保障MQ佇列
- 訊息佇列MQ核心原理全面總結(11大必會原理)佇列MQ