activemq的持久化機制

1、 ActiveMQ 的持久化
ActiveMQ 中,持久化是指對消息數據的持久化。在 ActiveMQ 中,默認的消息是保存 在內存中的。當內存容量不足的時候,或 ActiveMQ 正常關閉的時候,會將內存中的未處理
的消息持久化到磁盤中。具體的持久化策略由配置文件中的具體配置決定。 ActiveMQ 的默認存儲策略是 kahadb。如果使用 JDBC 作爲持久化策略,則會將所有的 需要持久化的消息保存到數據庫中。 所有的持久化配置都在 conf/activemq.xml 中配置,配置信息都在 broker 標籤內部定義。

2,kahadb方式:默認持久化化發方式

           是 ActiveMQ 默認的持久化策略。kahadb 是一個文件型數據庫。是使用內存+文件保證 數據的持久化的。

           特性:1、日誌形式存儲消息;2、消息索引以 B-Tree 結構存儲,可以快速更新;3、 完全支持 JMS 事務;4、支持多種恢復機制;
    

<persistenceAdapter>
    <kahaDBdirectory="${activemq.data}/kahadb"/>
</persistenceAdapter>

3,JDBC 持久化方式:
          ActiveMQ 將數據持久化到數據庫中。 不指定具體的數據庫。 可以使用任意的數據庫中。          

     <persistenceAdapter> 
            <jdbcPersistenceAdapterdataSource="#mysql-ds"/>
     </persistenceAdapter> 

             (1)  Adapter配置在conf/activemq.xml配置文件中:

          

          (2)  JDBC的bean配置:

 <!-- mysql的bean-->
        <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
		<property name="url" value="jdbc:mysql://ip:3306/activemq?relaxAutoCommit=true"/>
		<property name="username" value="root"/>
		<property name="password" value="你的數據庫密碼"/> 
		<property name="poolPreparedStatements" value="true"/> 
        </bean>

           (3)在activemq/lib/下加入對應的數據庫驅動jar包

                   

           (4)  配置成功後,需要在數據庫中創建對應的 database,否則無法訪問。表格 ActiveMQ 可 以自動創建。

            

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章