Java Spring 中的 ActiveMQ 数据持久性问题

ActiveMQ Data persistent Issue in Java Spring

我有一个使用嵌入式 activeMQ 5.11 的应用程序。在应用程序开始时,它会在 class 路径位置创建 activemq-data\producerBroker\KahaDB 文件夹。我确实想更改位置,但 spring.xml 没有占用位置。

Spring.xml 给定,

<bean id="producerBroker" class="org.apache.activemq.broker.SslBrokerService">
    <property name="brokerName" value="producerBroker" />
    <property name="persistent" value="true" />
     <property name="persistenceAdapter" ref="persistenceAdapter"/>
    <property name="transportConnectors">
        <list>
            <bean class="org.apache.activemq.broker.TransportConnector">
                <property name="name" value="xxx"></property>
                <property name="uri" value="${transportConnectorURIs}"></property>
            </bean>
        </list>
    </property>
    <property name="jmsBridgeConnectors">
        <list>
            <bean class="org.apache.activemq.network.jms.JmsQueueConnector">
                <property name="outboundQueueConnectionFactory">
                    <bean class="org.apache.activemq.ActiveMQSslConnectionFactory">
                        <property name="brokerURL" value="${brokerURL}" />
                        <property name="userName" value="${username}" />
                        <property name="password" value="${password}" />
                        <property name="trustStore" value="${trust.store.path}" />
                        <property name="trustStorePassword" value="${trust.store.password}" />
                        <!-- <property name="keyStore" value="${key.store.path}"/> -->
                        <!-- <property name="keyStorePassword" value="${key.store.password}"/> -->
                    </bean>
                </property>
                <property name="outboundQueueBridges">
                    <list>
                        <bean class="org.apache.activemq.network.jms.OutboundQueueBridge">
                            <constructor-arg value="${screenshotQueueName}" />
                        </bean>
                        <bean class="org.apache.activemq.network.jms.OutboundQueueBridge">
                            <constructor-arg value="${resultXmlQueueName}" />
                        </bean>
                    </list>
                </property>

            </bean>
        </list>
    </property>
</bean>


<bean id="persistenceAdapter" class="org.apache.activemq.store.kahadaptor.KahaPersistenceAdapter">
<property name="directory" value="E:\test"/>

当前的问题是它抛出一个错误,因为“异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到 class [org.apache.activemq.store.kahadaptor.KahaPersistenceA apter] for bean with name 'kahaPersistenceAdapter' defined in class path resource [spring/resultupload/resultupload.xml];嵌套异常是 java.la g.ClassNotFoundException: org.apache.activemq.store.kahadaptor.KahaPersistenceA更新

谁有在javaspring中activeMQ 5.11目录变化的经验?

必须在代理级别定义持久性位置的目标。

kahaPersistenceAdapter(基于文件)在 5.9 版本中被删除。你应该使用kahaDB。

kahaDB - 使用 KahaDB 嵌入式轻量级 non-relational 数据库

<broker brokerName="broker" persistent="true" useShutdownHook="false">
   <transportConnectors>
     <transportConnector uri="tcp://localhost:61616"/>
   </transportConnectors>
   <persistenceAdapter>
     <kahaDB directory="e:/temp" ... />
   </persistenceAdapter>
 </broker>

所有有效属性:http://activemq.apache.org/schema/core/activemq-core-5.11.0-schema.html#kahaDB