Apache ActiveMQ 持久化到MySQL資料庫的簡單配置

 

轉載:https://blog.csdn.net/rchm8519/article/details/41455365

 

1.  前言

ActiveMQ 是Apache出品,最流行的,能力強勁的開源訊息匯流排。ActiveMQ 是一個完全支援JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。

關於ActiveMQ 的詳細介紹請參考:http://baike.baidu.com/view/433374.htm?fr=aladdin

關於JMS的詳細介紹請參考:http://baike.baidu.com/subview/157103/12665866.htm?fr=aladdin

ActiveMQ提供多種資料持久化方式:可以持久化到檔案,也可以持久化到資料庫,其中資料庫可以支援MySQL和Oracle兩種型別。

預設提供的是持久化到檔案的方式,即activemq.xml檔案中的:

<persistenceAdapter>

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

</persistenceAdapter>

2.  步驟

本文重點接收的是持久化到MySQL中的配置方式:

2.1    新增MySQL驅動

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

 

2.2    修改配置檔案activemq.xml

將其中的這段配置:

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

修改為下面這段內容:

<persistenceAdapter>

         <jdbcPersistenceAdapter  dataSource="#derby-ds"/>

</persistenceAdapter>

 

另外需要在broker節點的上面定義id為derby-ds的bean,如下:       
 

            <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:3306/test_mq?relaxAutoCommit=true"/>

                            <property name="username" value="root"/>

                            <property name="password" value="root"/>

                            <property name="maxActive" value="200"/>

                            <property name="poolPreparedStatements" value="true"/>

                   </bean>

還得將mysql-connctor-java-5.1.12.jar驅動黏貼到activemq的lib目錄下。
 

2.3    新建資料庫

從配置中可以看出資料庫的名稱是test_mq,需要手動在MySql中新建一個test_mq的空資料庫。

此時,重新啟動MQ,就會發現test_mq庫中多了三張表:activemq_acks,activemq_lock,activemq_msgs,OK,說明已經持久化成功啦!