您好,登錄后才能下訂單哦!
ActiveMQ是一個非常流行的消息隊(duì)列服務(wù)中間件,基于JMS(Java Message Service)規(guī)范,并且它是一個純Java程序,運(yùn)行環(huán)境只需要Java虛擬機(jī)。
JMS規(guī)范定義了2類消息發(fā)送接收模型:點(diǎn)對點(diǎn)queue,發(fā)布訂閱topic,區(qū)別是能夠重復(fù)消費(fèi)和是否保存。
1,點(diǎn)對點(diǎn)queue:不可重復(fù)消費(fèi),消息被消費(fèi)前一直保存。
生產(chǎn)者發(fā)送消息到queue,一個消費(fèi)者取出并消費(fèi)消息。
消息被消費(fèi)后,queue中不再保存,所有只有一個消費(fèi)者能夠取到消息。
queue支持多個消費(fèi)者存在,但是一個消息只有一個消費(fèi)者可以消費(fèi)。
當(dāng)前沒有消費(fèi)者時,消息一直保存,直到被消費(fèi)者消費(fèi)。
2,發(fā)布訂閱topic:可重復(fù)消費(fèi),發(fā)布給所有訂閱者。
生產(chǎn)者發(fā)布消息到topic中,多個訂閱者收到并消費(fèi)消息。
和queue不同,發(fā)布到topic中的消息會被所有訂閱者消費(fèi)。
當(dāng)生產(chǎn)者發(fā)布消息時,不管是否有訂閱者,都不保存消息。
JMS規(guī)范定義的2類消息傳輸模型queue和topic比較:
Queue | Topic | |
模型 | 點(diǎn)對點(diǎn)Point-to-Point | 發(fā)布訂閱publish/subscribe |
有無狀態(tài) | queue消息在消費(fèi)前被一直保存在mq服務(wù)器上的文件或者配置DB | topic數(shù)據(jù)默認(rèn)不保存,是無狀態(tài)的。 |
完整性保障 | queue保證每條消息都被消費(fèi)者接收到 | topic不保證生產(chǎn)者發(fā)布的每條消息都被訂閱者接收到 |
消息是否會丟失 | 生產(chǎn)者發(fā)送消息到queue,消費(fèi)者接收到消息。如果沒有消費(fèi)者,將一直保存,不會丟失。 | 生產(chǎn)者發(fā)布消息到topic時,當(dāng)前的訂閱者都能夠接收到消息。如果當(dāng)前沒有訂閱者,該消息就丟失。 |
消息發(fā)布接收策略 | 一對一的消息發(fā)布接收策略,一個生產(chǎn)者發(fā)送的消息只被一個消費(fèi)者接收。mq服務(wù)器收到回復(fù)后,將這個消息刪除。 | 一對多的消息發(fā)布接收策略,同一個topic的多個訂閱者都能收到生產(chǎn)者發(fā)布的消息。 |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。