如何在Spring Boot中更改activemq-data文件夹的位置

时间:2016-10-24 20:22:36

标签: spring-boot activemq

我需要更改嵌入式activemq实例的数据文件夹。我使用spring-boot-starter-activemq在maven activemq-data文件夹中创建文件夹$baseDir。我想将其移至target文件夹,以便能够使用命令mvn clean删除该文件夹。

我发现只有以下文章,但是当我将系统属性activemq.store.dir传递给我的集成测试时,它就不起作用了。 http://activemq.apache.org/how-do-i-change-the-message-store-directory-for-an-embedded-broker.html

我试图找出是否可以在application.properties文件中设置它,但似乎不可能: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java

2 个答案:

答案 0 :(得分:2)

经过一些调试后,我发现我必须使用不同的系统属性:org.apache.activemq.default.directory.prefix

https://github.com/apache/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/util/IOHelper.java#L60

答案 1 :(得分:0)

Spring Boot不会自动配置ActiveMQ的嵌入模式。一切都在activeMQ级别完成,因此您应该参考他们的文档。正如您已经注意到的那样,您应该设置activemq.store.dir 系统属性

如果您尝试在集成测试中设置常规Spring Boot属性,那么这将不是一个系统属性,因此不会起作用。此外,如果您尝试在@Before中设置系统属性,则设置太晚,因为上下文已经是s.tarted

我不明白为什么你需要一个持久的代理进行集成测试,看起来像是一种气味。让Spring Boot做它的事情怎么样?如果您没有配置任何代理网址,那么您将获得vm://localhost?broker.persistent=false,并且根本不会创建任何目录。