一.概述
1.1核心概念
1.1.1JMS
JMS? (JAVA MESSAGE SERVICE)
1.1.2 P2P
點(diǎn)對(duì)點(diǎn)發(fā)送,一個(gè)消息只能被消費(fèi)一次
涉及:消息隊(duì)列,發(fā)送者,接收者
特點(diǎn):1.不用同時(shí)在線。2.一個(gè)消息只能被消費(fèi)一次
1.1.3Pub/Sub
Pub/Sub發(fā)布訂閱? 一個(gè)消息可以被消費(fèi)多次
涉及角色:主題(Topic)發(fā)布者(Publisher) 訂閱者(Subscriber)
客戶端將消息發(fā)送到主題,多個(gè)發(fā)布者將消息
特點(diǎn)
1.發(fā)布者和訂閱者同時(shí)在線
2.一個(gè)消息可以被多個(gè)訂閱者消費(fèi)
1.1.4MQ
MQ:消息中間件,消息隊(duì)列
作為系統(tǒng)間
1.2MQ的優(yōu)缺
1.解耦
降低系統(tǒng)模塊的耦合度
2.提高系統(tǒng)響應(yīng)時(shí)間
3.異步消息
4.過(guò)載保護(hù)
基于MQ實(shí)現(xiàn)削峰填谷
1.3主流MQ對(duì)比
1.ActiveMQ
Apache下
完全支持java的JMS協(xié)議
消息模式:1.點(diǎn)對(duì)點(diǎn) 2.發(fā)布訂閱
2.RabbitMQ
Erlang語(yǔ)言 實(shí)現(xiàn)的開源的MQ中間件,支持多種協(xié)議
3.Kafka
Apache下開源項(xiàng)目
高性能分布式消息隊(duì)列,一般海量數(shù)據(jù)傳輸,大數(shù)據(jù)部門比用
單機(jī)吞吐量:10W/s
4.RocketMQ
阿里貢獻(xiàn)給了Apache 參考了Kafka實(shí)現(xiàn)的基于java消息中間件
5.ZeroMQ
消息傳輸最快
二.RabbitMQ
2.1
2.2通信模塊
涉及核心:
Exchange(交換機(jī),交換器):根據(jù)綁定的匹配規(guī)則,對(duì)消息進(jìn)行匹配處理。
Queue()
三.RabbitMQ初體驗(yàn)
涉及角色:
1.MQ服務(wù)器
可基于Docker安裝RabbitMQ
記住:15672:網(wǎng)頁(yè)版,可視化服務(wù)器數(shù)據(jù)
5672:客戶端連接點(diǎn)的端口號(hào)
3.2.MQ消息發(fā)送者
1.依賴jar
2.代碼編寫
(1)創(chuàng)建連接工廠
設(shè)置連接線信息
(2)獲取連接對(duì)象
(3)創(chuàng)建通道
(4)定義隊(duì)列
3.運(yùn)行測(cè)試
查看控制臺(tái)能否獲取消息。
四.RabbitMQ的消息模式
4.1普通消息
點(diǎn)對(duì)點(diǎn)消息
一個(gè)消息只能消費(fèi)一次
只需要隊(duì)列就可以,不需要交換器
4.2交換器消息
fanout:只要有消息就轉(zhuǎn)發(fā)給綁定的隊(duì)列,不會(huì)進(jìn)行消息的路由判斷。
五.RabbitMQ消息的總結(jié)