天天看點

ActiveMQ持久化消息的三種方式

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/u010741376/article/details/51254545

ActiveMQ持久化消息的三種方式

本文隻介紹三種方式,分别是持久化為檔案,MYSql,Oracle。下面逐一介紹。

A:持久化為檔案

     這個你裝ActiveMQ時預設就是這種,隻要你設定消息為持久化就可以了。涉及到的配置和代碼有

<persistenceAdapter>
            <kahaDB directory="${activemq.base}/data/kahadb"/>
        </persistenceAdapter>

producer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);           

B:持久化為MySql

     你首先需要把MySql的驅動放到ActiveMQ的Lib目錄下,我用的檔案名字是:mysql-connector-java-5.0.4-bin.jar

     接下來你修改配置檔案

<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>      

在配置檔案中的broker節點外增加

<bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
    <property name="username" value="activemq"/>
    <property name="password" value="activemq"/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
  </bean>           

從配置中可以看出資料庫的名稱是activemq,你需要手動在MySql中增加這個庫。

然後重新啟動消息隊列,你會發現多了3張表

1:activemq_acks

2:activemq_lock

3:activemq_msgs

C:持久化為Oracle

    和持久化為MySql一樣。這裡我說兩點

1;在ActiveMQ安裝檔案夾裡的Lib檔案夾中增加Oracle的JDBC驅動。驅動檔案位于Oracle用戶端安裝檔案中的product\11.1.0\client_1\jdbc\lib檔案夾下。

2:

<bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@10.53.132.47:1521:cmfudv1"/>
    <property name="username" value="qdcommu"/>
    <property name="password" value="qdcommu"/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
  </bean>           

這裡的jdbc:oracle:thin:@10.53.132.47:1521:cmfudv1按照自己實際情況設定一下就可以了,特别注意的是cmfudv1是SID即服務名稱而不是TNS中配置的節點名。各位同學隻需要替換IP,端口和這個SID就可以了。