1. 程式人生 > >JMS訊息持久化,將ActiveMQ訊息持久化到mySql資料庫中

JMS訊息持久化,將ActiveMQ訊息持久化到mySql資料庫中

ActiveMQ5.8.0版本採用kahadb作為預設的訊息持久化方式。使用預設的持久化機制,我們不容易直接看到訊息究竟是如何持久的。ActiveMQ提供的JDBC持久化機制,能夠將持久化資訊儲存到資料庫。通過檢視資料庫中ActiveMQ生成的表結構和儲存的資料,能夠幫助我們更好的瞭解訊息的持久化機制。現在介紹如何配置activemq,將資料持久化到mysql中。

1.配置activeMQ需要的mySql資料來源

為了能夠使用JDBC訪問mysql資料庫,顯然必須要配置訊息伺服器的資料庫源。在activemq\apache-activemq-5.8.0\conf\activemq.xml進行配置

<!-- MySQL DataSource -->
	<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/amq_db?relaxAutoCommit=true"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
		<property name="poolPreparedStatements" value="true"/>
	</bean>
在</broker>結點之後,增加資料來源的配置

2.改變activeMQ預設的持久化方式

在activemq.xml中註釋掉預設的kahadb,使用jdbc持久化

<!--
        <persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"/>
        </persistenceAdapter>
		-->
		
		<persistenceAdapter>
			<jdbcPersistenceAdapter dataSource="#mysqlDataSource"/>
		</persistenceAdapter>
3.提供mysql的驅動程式

由於activeMQ訊息伺服器,沒有自帶mysql資料庫的驅動程式。我們需要手動將mysql驅動新增到訊息伺服器。

方法是將驅動拷貝到apache-activemq-5.8.0\lib\目錄下。

經過上面的三步配置,我們重新啟動訊息伺服器,就可以發現activeMQ在資料庫中新建了3張表

activemq_acks  ,activemq_lock  ,activemq_msgs 。至此資料庫持久化完成。後續部落格會繼續介紹這3張表的含義和使用,目前我還不清楚。