【问题标题】:How to change location of activemq-data folder in Spring Boot如何在 Spring Boot 中更改 activemq-data 文件夹的位置
【发布时间】:2016-10-25 20:43:11
【问题描述】:

我需要更改我嵌入的 activemq 实例的数据文件夹。我使用spring-boot-starter-activemq 在maven $baseDir 文件夹中创建文件夹activemq-data。我想将它移动到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

【问题讨论】:

    标签: spring-boot activemq


    【解决方案1】:

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

    如果您尝试在集成测试中设置常规 Spring Boot 属性,这将不是系统属性,因此无法正常工作。此外,如果您尝试在 @Before 中设置系统属性,则设置为时已晚,因为上下文已经启动

    我不明白为什么您需要一个持久的代理来进行集成测试,这对我来说似乎是一种气味。让 Spring Boot 做它的事情怎么样?如果您不配置任何代理 URL,您将获得 vm://localhost?broker.persistent=false,这根本不会创建任何目录。

    【讨论】:

    • 是的,非持久代理更适合集成测试,但有一个问题。
    • 是的,非持久代理更适合集成测试,但有一个问题。我可以在日志中找到以下消息: 1. ActiveMQ 已启动 2. Camel 向我的队列发送消息 3. ActiveMQ 已停止 4. ActiveMQ 已启动 5. JMS 客户端接收消息 6. ActiveMQ 已停止 当没有消费者 ActiveMQ 时停止。我只能在调用骆驼消息之前异步接收消息。
    【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2022-01-02
      • 2014-10-03
      相关资源
      最近更新 更多