1. 程式人生 > >activimq消息隊列持久化配置

activimq消息隊列持久化配置

重新發送 dstat alt drive 持久化 password logs 默認 生產

activimq持久化常用的有三種方式:1、文件持久化 2、mysql持久化 3、oracle持久化

在activimq的配置文件中默認開啟了文件持久化

技術分享

同時我們需要修改一行代碼:

技術分享

這樣在activimq重啟之後就不會有消息丟失了

如果要使用mysql持久化的話需要修改配置文件

<persistenceAdapter>
            <jdbcPersistenceAdapter  dataSource="#mysql-ds"/>
        </persistenceAdapter>

然後還需要配置一個datasource,這個datasource需要配置在broker節點外面

技術分享

1 <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
2         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
3         <property name="url" value="jdbc:mysql://localhost:3306/test?relaxAutoCommit=true"/>
4         <property name="username" value="root"/>
5         <property name="password" value="Java0713!"/>
6         <property name="maxActive" value="200"/>
7         <property name="poolPreparedStatements" value="true"/>
8     </bean> 

同時需要mysql數據庫驅動包mysql-connector-java-5.1.5-bin.jar,將該jar包放到activimq的lib目錄下

啟動activimq,這是發現activimq啟動不了,查看啟動日誌,發現報錯信息:

技術分享

這是再加入commons-dbcp-1.2.jar包,再啟動,還是啟動不了,再查看啟動日誌,發現報錯信息:

技術分享

再加入commons-pool.jar包,再啟動,這是啟動正常了,發現數據庫多了三張表:

技術分享

發送五條下次進行測試,這時並沒有接收,發現多了五條數據

技術分享

當消息接收之後,這五條記錄消失

技術分享

遺留問題:

當消費者消息接收完之後重啟activimq,這時生產者重新發送消息,一切都正常

但是如果消費者消息沒有接收完就重啟的話,生產者就不能繼續發送消息,消費者也不能接收任何消息,包括之前遺留的

activimq消息隊列持久化配置