消息中間件種類。 ActiveMQ:併發高的狀況下不優秀,早期比較流行。 Kafka:只關注於高併發,性能好,可是對數據重複、丟失、錯誤驗證要求不高。 RocketMQ:純Java開發,借鑑於Kafka,阿里開源,維護複雜。 RabbitMQ:基於Frlang語言開發,可靠、安全、穩定(新能沒有Kafuka好可是也不差)。
爲何選擇RabbitMQ? 跨語言。數據可靠性高。 SpringAMQP整合了RabbitMQ,有豐富的API。 高性能。 爲啥高性能? 由於使用了Erlang語言,而Erlang語言是普遍用於交換機開發的語言。Erlang語言有原生Socket同樣的延遲底。 什麼是AMQP協議? AMQP(高級消息隊列協議):爲面向中間件設計的應用層協議。
AMQP概念: Server:又稱Broker,接受客戶端鏈接。 Connection:應用程序和Broker的鏈接。 Channel:網絡信道,消息傳遞的通道,客戶端能夠創建多個Channel。 Message:傳遞的數據。由Properties和Body組成。經過設置Properties能夠設置消息優先級、延遲投遞等特性。 Virtual host:虛擬主機。用於在邏輯層面上隔離(相似於包名)。一個虛擬主機裏面能夠有多個交換機和消息隊列,可是不能有相同的。 Exchange:交換機,接收消息,綁定消息隊列。 Bindin:交換機和消息對類須要綁定,綁定中包含一個 routing key Routing key :路由規則,能夠用來肯定一個消息的傳遞路由。 Queue:消息隊列。消費者監聽並消費。 RabbitMQ消息是如何流轉的?