一、消息的存儲方式

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ā)消息副本到訂閱者,消息直到所有的持久化訂閱者都被接收才能被刪除。

持久化存儲方式:

  1. KahaDB消息存儲

  2. AMQ消息存儲

  3. JDBC消息存儲

  4. 內(nèi)存消息存儲

二、KahaDB存儲方式

  KahaDB是從ActiveMQ 5.4開始默認(rèn)的持久化插件。KahaDb恢復(fù)時間遠(yuǎn)遠(yuǎn)小于其前身AMQ并且使用更少的數(shù)據(jù)文件,所以可以完全代替AMQ,kahaDB的持久化機(jī)制同樣是基于日志文件,索引和緩存。

(一)、KahaDB主要特性:

  1. 日志形式存儲消息;

  2. 消息索引以B-Tree結(jié)構(gòu)存儲,可以快速更新;

  3. 完全支持JMS事務(wù);

  4. 支持多種恢復(fù)機(jī)制;

(二)、適用場景:

  1. 高吞吐量的應(yīng)用程序

  2. 存儲大數(shù)據(jù)量的消息

(三)、配置方式 conf/activemq.xml:

        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式