4

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

4

2 回答 2

2

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

于 2012-07-07T16:59:40.383 回答
0

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

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

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

于 2012-07-08T07:06:49.463 回答