0

我将我的应用程序ActiveMQ 5.5.1ActiveMQ 5.8.0. 我的应用程序在activemq.xml文件中有持久性配置,如下所示:

    <persistenceAdapter>
     <kahaPersistenceAdapter directory="${activemq.base}/data/msg" maxDataFileLength="20 Mb"/>
    </persistenceAdapter>

但是当我启动activemq时,我在wrapper.log文件中得到以下异常:

INFO   | jvm 1    | 2013/02/24 10:43:28 | Caused by: java.lang.ClassNotFoundException: org.apache.activemq.store.kahadaptor.KahaPersistenceAdapter
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at java.net.URLClassLoader$1.run(Unknown Source)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at java.security.AccessController.doPrivileged(Native Method)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at java.net.URLClassLoader.findClass(Unknown Source)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at java.lang.ClassLoader.loadClass(Unknown Source)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at java.lang.ClassLoader.loadClass(Unknown Source)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at org.apache.xbean.spring.context.v2c.XBeanQNameHelper.loadClass(XBeanQNameHelper.java:107)
INFO   | jvm 1    | 2013/02/24 10:43:28 |   at org.apache.xbean.spring.context.v2c.XBeanQNameHelper.getBeanInfo(XBeanQNameHelper.java:72)

注意:我的应用程序在队列中有消息,这些消息由存储activemq 5.5.1且无法更改持久性配置。

4

2 回答 2

4

在 v5.8.0 中,依赖关系已经被分解了一点,以允许您减少运行代理所需的 jar 数量。Kaha 适配器位于 activemq-amq-store 组件中,因此如果您想使用它,您需要将它带入您的项目中。

请注意,此适配器已被弃用,并将在 v5.9.0 中消失,因此移至受支持的适配器之一是个好主意。目前默认适配器是 KahaDB,位于 activemq-kahadb-store。你也可以试试 LevelDB 适配器,它有一个更快的索引,但还很年轻,可能有一些问题。

虽然没有迁移工具可以让您轻松地从旧存储迁移到新的 KahaDB 存储,但您可以通过使用 KahaDB 设置新代理并使用网络连接器将其连接到旧代理来完成此操作。一旦新代理注册了对您在旧代理上的旧存储中的消息的目的地的需求,mew 代理应该耗尽所有消息并将它们存储在 KahaDB 存储中。

于 2013-02-24T11:48:51.177 回答
1

你有没有放在activemq-all-5.8.0.jar类路径中?

弃用,但仍包含在 jar 中KahaPersistenceAdapter

于 2013-02-24T10:12:20.797 回答