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 

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