ActiveMQ與Spring整合:(2)數據的持久化

        由於本系列文章並不是介紹activemq的基本概念和使用,不會activemq基本概念的人可能會覺得雲裏霧裏的,所以最好找一些介紹activemq基本使用的文章。本篇文章主要繼承上一篇博客,重點介紹使用,而不是知識點的介紹。

        在學習java消息服務JMS時候,我們經常會設置消息的持久化方式,但是設置了持久化之後,消息如何保存呢?這篇博客主要介紹消息是如何持久化的。消息持久化主要有兩種方式:一是持久化文件,二是持久化到數據庫中。

1、持久化到文件,默認保存方式爲kahaDB。activemq.xml中持久化配置:

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

假如設置發送消息時設置消息爲持久化,這時候啓動了broken服務器,消息發送者,但是消息接收者沒有啓動,那麼持久化文件中會把消息保存到文件中;知道消息接受者接收消息之後會把消息記錄刪除。以下kahadb目錄爲保存的消息記錄。


2、保存到數據數據庫,如mysql,Oracle數據庫。

首先需要下載數據庫驅動包,這裏使用的是mysql數據庫,所以下載了mysql-connector-java-5.0.4-bin.jar,並把jar包放入到apache-activemq-5.8.0\lib目錄下。

修改activemq.xml配置文件:

<persistenceAdapter>
            <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
        </persistenceAdapter>
同時在activemq.xml文件的broken節點外面添加如下配置:

   
     <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="root"/>
    	<property name="password" value="root"/>
    	<property name="maxActive" value="200"/>
    	<property name="poolPreparedStatements" value="true"/>
  </bean>
在數據庫中新建activemq數據庫,這是啓動activemq後,會在數據庫下新建三個表:


這時先啓動消息發送者,會在activemq_msgs下看到多了一條記錄。

再啓動消息接受者,會看到表中記錄已被刪除。



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