朋也的博客 » 首页 » 文章
作者:朋也
日期:2018-11-06
类别:ActiveMQ学习笔记
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
ActiveMQ默认使用的持久性机制是KahaDB,这货不熟悉,所以这篇文章来介绍一下将队列中的消息存放在MySQL数据库里
找到 conf
文件夹,打开 activemq.xml
文件,找到下面配置
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
可以看到,ActiveMQ默认使用的是kahadb
,把这一行注释掉,加上MySQL的配置(mysql-datasource的bean要配置在broker标签外面),如下
<broker>
<!-- ... -->
<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<jdbcPersistenceAdapter dataSource="#mysql-datasource"/>
</persistenceAdapter>
<!-- ... -->
</broker>
<bean id="mysql-datasource" 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?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value=""/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
注意上面数据库连接中的用户名密码要根据自己的mysql服务来进行修改,我这里用是test库
将mysql-connector-java、commons-dbcp、commons-pool三个jar包拷贝到 ActiveMQ 文件夹下的 lib
文件夹内
jar包下载地址:
然后再次重启ActiveMQ,如果没有报错,一般就没问题了
打开 mysql 数据库客户端 找到 test
库,会发现多了三张表
运行HelloWorld里的Producer
创建100条消息
打开表 ACTIVEMQ_MSGS
可以看到已经有100条数据了
再次运行 Consumer
消费这100条消息,然后再打开表 ACTIVEMQ_MSGS
则没有数据了