ActiveMQ学习-持久化队列数据,将队列中的消息存入MySQL (3)

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?relaxAutoCommit=true"/>
    <property name="username" value="root"/>
    <property name="password" value=""/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
</bean>

注意上面数据库连接中的用户名密码要根据自己的mysql服务来进行修改,我这里用是test库

ActiveMQ添加MySQL驱动

将mysql-connector-java、commons-dbcp、commons-pool三个jar包拷贝到 ActiveMQ 文件夹下的 lib 文件夹内

ActiveMQ学习-持久化队列数据,将队列中的消息存入MySQL (3)

然后再次重启ActiveMQ,如果没有报错,一般就没问题了

打开 mysql 数据库客户端 找到 test 库,会发现多了三张表

ActiveMQ学习-持久化队列数据,将队列中的消息存入MySQL (3)

测试

运行HelloWorld里的 Producer 创建100条消息

打开表 ACTIVEMQ_MSGS 可以看到已经有100条数据了

ActiveMQ学习-持久化队列数据,将队列中的消息存入MySQL (3)

再次运行 Consumer 消费这100条消息,然后再打开表 ACTIVEMQ_MSGS 则没有数据了

原文链接:

原文 

https://tomoya92.github.io/2018/11/06/activemq-persistence/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » ActiveMQ学习-持久化队列数据,将队列中的消息存入MySQL (3)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址