一、消息的存儲方式
ActiveMQ支持JMS規(guī)范中的持久化消息與非持久化消息
持久化消息通常用于不管是否消費者在線,它們都會保證消息會被消費者消費。當(dāng)消息被確認(rèn)消費后,會從存儲中刪除
非持久化消息通常用于發(fā)送通知以及實時數(shù)據(jù),通常要求性能優(yōu)先,消息可靠性并不是必須的情況
MQ支持可插拔式的消息存儲,如:內(nèi)存、文件和關(guān)系數(shù)據(jù)庫等方式
Queue消息模型在ActiveMQ的存儲
采用存儲采用先進(jìn)先出(FIFO),一個消息只能被一個消費者消費,當(dāng)消息被確認(rèn)消費之后才會被刪除。
Topic消息模型(針對持久訂閱)
每個訂閱者獲取的消息實際是消息的一個副本,只有一個消息副本會被存儲,MQ提供了一個指針來指向消息存儲并且分發(fā)消息副本到訂閱者,消息直到所有的持久化訂閱者都被接收才能被刪除。
持久化存儲方式:
KahaDB消息存儲
AMQ消息存儲
JDBC消息存儲
內(nèi)存消息存儲
二、KahaDB存儲方式
KahaDB是從ActiveMQ 5.4開始默認(rèn)的持久化插件。KahaDb恢復(fù)時間遠(yuǎn)遠(yuǎn)小于其前身AMQ并且使用更少的數(shù)據(jù)文件,所以可以完全代替AMQ,kahaDB的持久化機(jī)制同樣是基于日志文件,索引和緩存。
(一)、KahaDB主要特性:
日志形式存儲消息;
消息索引以B-Tree結(jié)構(gòu)存儲,可以快速更新;
完全支持JMS事務(wù);
支持多種恢復(fù)機(jī)制;
(二)、適用場景:
高吞吐量的應(yīng)用程序
存儲大數(shù)據(jù)量的消息
(三)、配置方式 conf/activemq.xml:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26