JMS訊息持久化,將ActiveMQ訊息持久化到mySql資料庫中
阿新 • • 發佈:2019-01-25
ActiveMQ5.8.0版本採用kahadb作為預設的訊息持久化方式。使用預設的持久化機制,我們不容易直接看到訊息究竟是如何持久的。ActiveMQ提供的JDBC持久化機制,能夠將持久化資訊儲存到資料庫。通過檢視資料庫中ActiveMQ生成的表結構和儲存的資料,能夠幫助我們更好的瞭解訊息的持久化機制。現在介紹如何配置activemq,將資料持久化到mysql中。
1.配置activeMQ需要的mySql資料來源
為了能夠使用JDBC訪問mysql資料庫,顯然必須要配置訊息伺服器的資料庫源。在activemq\apache-activemq-5.8.0\conf\activemq.xml進行配置
在</broker>結點之後,增加資料來源的配置<!-- 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>
2.改變activeMQ預設的持久化方式
在activemq.xml中註釋掉預設的kahadb,使用jdbc持久化
3.提供mysql的驅動程式<!-- <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> --> <persistenceAdapter> <jdbcPersistenceAdapter dataSource="#mysqlDataSource"/> </persistenceAdapter>
由於activeMQ訊息伺服器,沒有自帶mysql資料庫的驅動程式。我們需要手動將mysql驅動新增到訊息伺服器。
方法是將驅動拷貝到apache-activemq-5.8.0\lib\目錄下。
經過上面的三步配置,我們重新啟動訊息伺服器,就可以發現activeMQ在資料庫中新建了3張表
activemq_acks ,activemq_lock ,activemq_msgs 。至此資料庫持久化完成。後續部落格會繼續介紹這3張表的含義和使用,目前我還不清楚。