ActiveMQ5.8 消息持久化 高效日志的设置

ActiveMQ默认的消息持久化方式:

均在 ActiveMQ_HOME/conf/activemq.xml文件中配置实现。

 

第一种方式 

持久化为数据文件方式是ActiveMQ默认使用方式

配置如下:

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

第二种方式 

通过JDBC将消息持久化到数据库中

配置如下:

<persistenceAdapter>
       <jdbcP ersistenceAdapte directory = "${activemq.data}" dataSource="#mysqlDataSource" / >
     < / persistenceAdapter >

        

  mysqlDataSource数据源配置如下

  1. <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  2.       destroy-method="close">  
  3.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
  4.     <property name="url" value="jdbc:mysql://localhost/activemq  relaxAutoCommit=true"/>  
  5.     <property name="username" value="activemq"/>  
  6.     <property name="password" value="activemq"/>  
  7.     <property name="poolPreparedStatements" value="true"/>  
  8. </bean>

 

第三种方式 

基于内存的消息存储方式

配置如下:

   <broker persistent="false">

<persistenceAdapter>
       <jdbcP ersistenceAdapte directory = "${activemq.data}" dataSource="#mysqlDataSource" / >
     < / persistenceAdapter >

    </broker>

 

ActiveMQ支持一种高效日志方式,具体设置如下:

 <persistenceFactory><journalPersistenceAdapterFactory journalLogFiles="5" dataDirectory="${activemq.base}/data" dataSource="#mysqlDataSource"></journalPersistenceAdapterFactory> </persistenceFactory>

mysqlDataSource数据源配置详见上面配置。

在消息消费者能跟上生产者的速度时,journal文件能大大减少需要写入到DB中的消息。举个例子:生产者产生了10000个消息,这10000个消息会保存到journal文件中,但是消费者的速度很快,在journal文件还未同步到DB之前,以消费了9900个消息。那么后面就只需要写入100个消息到DB了。如果消费者不能跟上生产者的速度,journal文件可以使消息以批量的方式写入DB中,JDBC驱动进行DB写入的优化。从而提升了性能。另外,journal文件支持JMS事务的一致性。

 

 ActiveMQ源码下载地址如下:

       https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/

你可能感兴趣的:(apache,activemq,高效日志,消息持久化)