一、消息的存儲(chǔ)方式

ActiveMQ支持JMS規(guī)范中的持久化消息與非持久化消息

  • 持久化消息通常用于不管是否消費(fèi)者在線,它們都會(huì)保證消息會(huì)被消費(fèi)者消費(fèi)。當(dāng)消息被確認(rèn)消費(fèi)后,會(huì)從存儲(chǔ)中刪除

  • 非持久化消息通常用于發(fā)送通知以及實(shí)時(shí)數(shù)據(jù),通常要求性能優(yōu)先,消息可靠性并不是必須的情況

  • MQ支持可插拔式的消息存儲(chǔ),如:內(nèi)存、文件和關(guān)系數(shù)據(jù)庫(kù)等方式

Queue消息模型在ActiveMQ的存儲(chǔ)

  采用存儲(chǔ)采用先進(jìn)先出(FIFO),一個(gè)消息只能被一個(gè)消費(fèi)者消費(fèi),當(dāng)消息被確認(rèn)消費(fèi)之后才會(huì)被刪除。

Topic消息模型(針對(duì)持久訂閱)
  每個(gè)訂閱者獲取的消息實(shí)際是消息的一個(gè)副本,只有一個(gè)消息副本會(huì)被存儲(chǔ),MQ提供了一個(gè)指針來(lái)指向消息存儲(chǔ)并且分發(fā)消息副本到訂閱者,消息直到所有的持久化訂閱者都被接收才能被刪除。

持久化存儲(chǔ)方式:

  1. KahaDB消息存儲(chǔ)

  2. AMQ消息存儲(chǔ)

  3. JDBC消息存儲(chǔ)

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

二、KahaDB存儲(chǔ)方式

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

(一)、KahaDB主要特性:

  1. 日志形式存儲(chǔ)消息;

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

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

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

(二)、適用場(chǎng)景:

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

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

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

        		

網(wǎng)友評(píng)論