这两天开始接触学习activeMQ,基础的学习那些我就不论述了,网上也很多资料,我现在是把自己学习中遇到的问题记录下来,我学习到持久化相关的问题。我学习的是mysql数据库,其他数据库配置网上也方法就上网搜了一下方法,基本的是配置activemq.xml。
配置如下:
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
把这个改成
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#derby-ds"/>
</persistenceAdapter>
然后在 配置文件中的 broker 节点外增加 :
<bean id="derby-ds" 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/activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
activemq 是你的数据库名字,要在数据库添加。这个配置也可以在conf/activemq-jdbc.xml下找到复制过去。
在把mysql-connector-java-commercial-5.1.25-bin.jar放入lib文件中
然后启动activemq.bat文件。我的是64位的,就启动64位文件夹里面的activemq.bat。
<strong><span style="color:#ff0000;">启动之后一闪就关了,报错了。数据库也没有生成表。报错截图如下:</span></strong>
<strong><span style="color:#ff0000;">
</span></strong>
信息大概是这样的
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport
.java:27)
at org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(B
rokerFactory.java:43)
at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.j
ava:70)
at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.j
ava:54)
at org.apache.activemq.console.command.StartCommand.startBroker(StartCom
mand.java:115)
at org.apache.activemq.console.command.StartCommand.runTask(StartCommand
.java:74)
... 10 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/io/FileSyste
mResource
我就找原因,找了好多;也看了下配置;也没有错;后面看到了报spring相关的错误。想是不是缺少了spring相关的包。
然后就把spring相关的包放入lib文件夹里面。在重新启动;ok!!好了可以了。
至此持久化的第一步完成了;看看数据库也生成了三张表了。!!
所以在持久化的时候大家也还是看看不要忘记加入了spring的包。因为网上的方法大都是只是说了配置文件跟加入mysql链接相关的包。apache-activemq-5.8.0文件也自带了spring的包;但是就是不行;要把它放入lib文件夹里面才行。
顺带说一下我下载的是apache-activemq-5.8.0的版本。
这个是刚刚学习的遇到的一个问题,如有表述不当的大家指正咯!