1.MQ作用
異步、解耦、分佈式、錯峯限流。
2.目前主流的MQ介紹
Kafka、RabbitMQ、RocketMQ
Kafka:分佈式、高吞吐;不支持事務對重複、錯誤和丟失沒有嚴格要求。
RabbitMQ:純Java開發,高吞吐量,高可用性,適用於大規模分佈式系統。
ActiveMQ:豐富的API,多種集羣構建模式,但吐量下降一般適用於中小型企業。
3.消息中間件的組成
3.1 Broker: 消息服務器,作爲server提供消息核心服務
3.2 Producer: 消息生產者,業務的發起方,負責生產消息傳輸給broker,
3.3 Consumer: 消息消費者,業務的處理方,負責從broker獲取消息並進行業務邏輯處理
3.4 Topic :主題,發佈訂閱模式下的消息統一彙集地,不同生產者向topic發送消息,由MQ服務器分發到不同的訂閱者,實現消息的 廣播
3.5 Queue:隊列,PTP模式下,特定生產者向特定queue發送消息,消費者訂閱特定的queue完成指定消息的接收
3.6 Message:消息體,根據不同通信協議定義的固定格式進行編碼的數據包,來封裝業務數據,實現消息的傳輸
4 消息隊列5種模式
(一) 簡單模式
特點: 一個消費者
(二) 工作模式
特點:多個消費者,每個消費者處理的信息是不一樣的,用在高併發.
(三) 訂閱模式
特點:每個消費者得到的消息是一樣的
(四) 路由模式
說明:路由模式是發佈訂閱模式的升級,通過定義不用的路由key使得程序將消息發送到不同的隊列中
每個消費者得到信息不一樣的,信息有routingkey,消費者執行select where routingkey=mobile
(五) 主題模式
說明:可以通過路由key將消息發送到一類相同的key中 使用通配符實現
消息分類,消費者取消息時用mobile.*能取到routingKey爲mobile.cart和mobile.order的信息。