activemq使用總結

ActiveMQ 消息持久化存儲方式
    1.kahaDB 默認持久化的方式(通過文件共享的方式實現集羣)
    2.JDBC存儲
    3.Memory內在
    4.LevelDb  性能高於kahaDB
    5.JDBC with ActiveMQ journal

(1)kahaDB
    KahaDB是目前默認的存儲方式,可用於任何場景,提高了性能和恢復能力。消息存儲使用一個事務日誌和僅僅用一個索引文件來存儲它所有的地址。
  KahaDB是一個專門針對消息持久化的解決方案,它對典型的消息使用模式進行了優化。在kaha中,數據被追加到 data logs中。 當不再需要log文件中的數據的時候,log文件會被丟棄。
  KahaDB基本配置如下:
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>
    
(2)mysql存儲      
    <persistenceAdapter>
        <!--存儲到mysql持久化方式--> 
        <jdbcPersistenceAdapter dataSource="#my-ds" />
    </persistenceAdapter>

    <!-- 配置存儲方式-mysql配置mysql數據源-->
    <bean id="my-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://192.168.1.129:3306/activemq?characterEncoding=utf-8" />
        <property name="username" value="arcln" />
        <property name="password" value="123456" />
    </bean>

   導入三個jar包放到  ./lib/目錄下
    commons-dbcp-1.4.jar
    commons-pool-1.5.7.jar
    mysql-connector-java-5.1.8.jar

    配置好後,重啓
    # sh activemq start
    在數據庫中爲自動添加三個表 
    activemq_msgs  消息內容,發送後會添加相應記錄,消費完後會自動刪除
    activemq_acks  存儲持久訂閱的消息
    activemq_lock  鎖表
    
(3) JDBC with ActiveMQ journal
    這種方式克服了JDBC Store的不足,使用快速的緩存寫入技術,大大提高了性能。
    <beans>
   <broker brokerName="test-broker" xmlns="http://activemq.apache.org/schema/core">
    <persistenceFactory>
     <journalPersistenceAdapterFactory journalLogFiles="4" journalLogFileSize="32768"
      useJournal="true" useQuickJournal="true" dataSource="#mysql_ds" dataDirectory="activemq-data">
     </persistenceFactory>
   </broker>
   </beans>
   
   
JDBC存儲和JDBC with ActiveMQ journal的區別:
    1. JDBC with journal的性能優於jdbc
  2. JDBC用於master/slave模式的數據庫分享
  3. JDBC with journal不能用於master/slave模式
  4. 一般情況下,推薦使用jdbc with journal 

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