【问题标题】:Where to keep ActiveMQ data?在哪里保存 ActiveMQ 数据?
【发布时间】:2012-07-07 18:36:55
【问题描述】:

我正在管理运行带有应用程序的 tomcat6 的服务器,该应用程序由我们的程序员编写。它使用 ActiveMQ。应用程序将 ActiveMQ 队列数据保存在 $JAVA_TEMP/activemq-data 中。 Debian Squeeze 上的 Tomcat6 在每次重新启动时都会清除 $JAVA_TEMP(默认为 /tmp/tomcat6-temp)。程序员说,这些数据在服务重启之间必须是持久的。 java servlet 保存持久数据的合适位置是什么?恕我直言,它不是 $JAVA_TEMP 目录。或者可能是程序员是对的,我应该改变默认的 Debian tomcat 行为?

【问题讨论】:

    标签: tomcat debian tomcat6 activemq


    【解决方案1】:

    ActiveMQ 提供持久性适配器来存储服务器重启所需的消息。持久化消息有不同的策略。

    • 基于文件的持久性存储:在此策略中,消息存储到文件存储中。您可以在 ActiveMQ 配置中指定目录。见下例,详细配置请参考:http://activemq.apache.org/amq-message-store.html

      <broker brokerName="broker" persistent="true" useShutdownHook="false"> <persistenceAdapter>

      <amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>

      </persistenceAdapter>

      <transportConnectors>

      <transportConnector uri="tcp://localhost:61616"/>

      </transportConnectors>

      </broker>

    • 基于数据库的持久性存储:在此策略中,消息存储在数据库中,如果您的消息很重要,请使用此策略。有关配置 JDBC - 数据库持久性的信息,请参阅http://activemq.apache.org/jdbc-support.html

    【讨论】:

    • 这个配置中directory="activemq-data" 放在哪里?在 $JAVA_TEMP 中? jave servlet 存储持久文件的正确方法是什么?
    【解决方案2】:

    当谈到 java servlet 的存储时,首先想到的是可伸缩性。通常,Java servlet 被构建和设计为可同时部署在多个服务器(tomcat 实例等)上,以实现垂直扩展。因此,经验法则是尽可能使用数据库存储。在您的特定情况下,您似乎运行单个服务器,您可以使用文件系统上您想要的任何位置。也许您想将数据存储在 NAS/SAN 上。

    ActiveMQ 可以通过持久性适配器处理大多数存储选项。

    link 描述了 ActiveMQ 如何处理持久性以及如何配置它。这是一个丰富的领域,它取决于很多要求以及您喜欢如何进行设置。

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2017-09-12
      • 1970-01-01
      • 2021-05-04
      • 2013-11-16
      • 2019-05-08
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多