首页 > 代码库 > activimq消息队列持久化配置
activimq消息队列持久化配置
activimq持久化常用的有三种方式:1、文件持久化 2、mysql持久化 3、oracle持久化
在activimq的配置文件中默认开启了文件持久化
同时我们需要修改一行代码:
这样在activimq重启之后就不会有消息丢失了
如果要使用mysql持久化的话需要修改配置文件
<persistenceAdapter> <jdbcPersistenceAdapter dataSource="#mysql-ds"/> </persistenceAdapter>
然后还需要配置一个datasource,这个datasource需要配置在broker节点外面
1 <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 2 <property name="driverClassName" value="http://www.mamicode.com/com.mysql.jdbc.Driver"/> 3 <property name="url" value="http://www.mamicode.com/jdbc:mysql://localhost:3306/test?relaxAutoCommit=true"/> 4 <property name="username" value="http://www.mamicode.com/root"/> 5 <property name="password" value="http://www.mamicode.com/Java0713!"/> 6 <property name="maxActive" value="http://www.mamicode.com/200"/> 7 <property name="poolPreparedStatements" value="http://www.mamicode.com/true"/> 8 </bean>
同时需要mysql数据库驱动包mysql-connector-java-5.1.5-bin.jar,将该jar包放到activimq的lib目录下
启动activimq,这是发现activimq启动不了,查看启动日志,发现报错信息:
这是再加入commons-dbcp-1.2.jar包,再启动,还是启动不了,再查看启动日志,发现报错信息:
再加入commons-pool.jar包,再启动,这是启动正常了,发现数据库多了三张表:
发送五条下次进行测试,这时并没有接收,发现多了五条数据
当消息接收之后,这五条记录消失
遗留问题:
当消费者消息接收完之后重启activimq,这时生产者重新发送消息,一切都正常
但是如果消费者消息没有接收完就重启的话,生产者就不能继续发送消息,消费者也不能接收任何消息,包括之前遗留的
activimq消息队列持久化配置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。