JMS消息模型
Queue點對點(Point to Point)
Queue隊列是點對點消費,發(fā)送者發(fā)送一條消息,只有唯一的一個消費者能對消息進行消費。消息生產(chǎn)者都將消息發(fā)送到消息的隊列(Queue)中。隊列的消息可以是持久的,保證消息服務(wù)出現(xiàn)故障仍然能夠傳遞消息。
特點:
1).每個消息只有一個消費者(Customer),消息一旦被消費,消息就不在隊列(Queue)了。
2).消息發(fā)送者和接收者沒有時間依賴,消息發(fā)送者只管消息發(fā)送,不管消息的消費者是否有接收消息。
3).消息被接收到消息后,會發(fā)送消息確認(ACK)通知給消息隊列(Queue)。
Queue模型圖:
發(fā)布/訂閱(Publish/Subscribe)
消息發(fā)布者發(fā)布消息,消息通過主題(Topic)傳遞給所有接收者,消息發(fā)布者和訂閱者彼此不相干。主題(Topic)主要用于保存和傳遞消息。
發(fā)布/訂閱模型中,應(yīng)用程序有Topic、發(fā)布者(Publish)、訂閱者(Subscribe)組成。
特點:
1).每個消息可有多個消費訂閱者。
2).發(fā)布者和訂閱者無時間依賴性。某個主題(Topic)的訂閱者,必須先創(chuàng)建一個訂閱者后才能消費發(fā)布者的消息,且為消費消息,訂閱者必須保持運行狀態(tài)。
3).可持久化訂閱。
Topic模型圖:
2).AMQ方式
性能高于JDBC,消息會按順序追加方式寫入日志文件中,性能較高。為了提升性能,會創(chuàng)建消息主鍵索引。缺點是索引文件很大,需占用大量磁盤空間。如果broker崩潰,重建索引速度非常慢。每個日志文件大小有限定(默認32M)。超過此大小,會重新建立一文件。當所有消息消費完成,系統(tǒng)刪除這個文件或進行規(guī)定(取決于配置)。
配置:
索引重建時間長,占用磁盤空間大,此方式不推薦。
3).KafaDB方式
KafaDB持久化是ActiveMQ默認的持久化方式。KafaDB持久化和AMQ一樣都是基于日志文件,但KafaDB方式恢復(fù)時間遠少于AMQ方式,且使用更少的數(shù)據(jù)文件。優(yōu)于AMQ方式持久化。
配置:
directory:指定消息持久化的存儲目錄。
journalMaxFileLength:指定保存消息日志文件大小。
4).LevelDB方式
ActiveMQ5.6版本后推出的LevelDB方式持久化。不過LevelDB方式性能要高于KafaDB,后面很可能是這個趨勢。
配置:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。