我需要更改嵌入式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
答案 0 :(得分:2)
经过一些调试后,我发现我必须使用不同的系统属性:org.apache.activemq.default.directory.prefix
。
答案 1 :(得分:0)
Spring Boot不会自动配置ActiveMQ的嵌入模式。一切都在activeMQ级别完成,因此您应该参考他们的文档。正如您已经注意到的那样,您应该设置activemq.store.dir
系统属性。
如果您尝试在集成测试中设置常规Spring Boot属性,那么这将不是一个系统属性,因此不会起作用。此外,如果您尝试在@Before
中设置系统属性,则设置太晚,因为上下文已经是s.tarted
我不明白为什么你需要一个持久的代理进行集成测试,看起来像是一种气味。让Spring Boot做它的事情怎么样?如果您没有配置任何代理网址,那么您将获得vm://localhost?broker.persistent=false
,并且根本不会创建任何目录。