ActiveMQ5.14.3持久化信息到MySQL的一些注意事项

来源:互联网 发布:java api1.6文档下载 编辑:程序博客网 时间:2024/06/01 18:54

最近都在基于ActiveMQ实现安卓端的推送,遇到了一些问题,都记录一下。

ActiveMQ默认情况下使用KahaDB存储数据,网上也有很多持久化消息到MySQL的方法,基本差不多,如这篇所示: Activemq持久化消息到MySql数据库中

可能以前ActiveMQ的版本这样做是可以的,但是我自己经过这样试之后启动activemq.bat时报错,错误信息如下:

nested exception isorg.springframework.beans.factory.Bean

CreationException: Error creating bean withname '(inner bean)#9574cf5' defined

in class path resource [activemq.xml]:Cannot resolve reference to bean 'MySQL-D

S' while setting bean property'dataSource'; nested exception is org.springframe

work.beans.factory.CannotLoadBeanClassException:Cannot find class [org.apache.c

ommons.dbcp.BasicDataSource] for bean withname 'MySQL-DS' defined in class path

 resource [activemq.xml]; nested exception isjava.lang.ClassNotFoundException:

org.apache.commons.dbcp.BasicDataSource

主要就是找不到org.apache.commons.dbcp.BasicDataSource 这个类。后来经过网上查找资料,发现ActiveMQ5.14.3版本提供的jar包是commons-dbcp2-2.1.1 包(位置在lib/optional中),所以在activemq.xml中配置MySQL数据源时要把class写作org.apache.commons.dbcp2.BasicDataSource,整体大致如下,其中id要和前面设置的一样,然后用户名密码和url的值根据自己MySQL的配置自己设置:

<!-- MySQL DataSource -->
    <bean id="MySQL-DS" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
             <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/misc?useUnicode=true&amp;characterEncoding=UTF-8"/>
           <property name="username" value="root"/>
            <property name="password" value="+d2C]#9[DA"/>
            <property name="poolPreparedStatements" value="true"/>
    </bean>

经过上述修改,可以启动ActiveMQ并成功地持久化信息到MySQL了。
原创粉丝点击