プログラマーが作成したアプリケーションで tomcat6 を実行するサーバーを管理しています。ActiveMQ を使用しています。アプリケーションは ActiveMQ キュー データを $JAVA_TEMP/activemq-data に保存します。Debian Squeeze の Tomcat6 は、再起動するたびに $JAVA_TEMP (デフォルトでは /tmp/tomcat6-temp) をクリアします。プログラマーは、このデータはサービスの再起動間で永続的でなければならないと言います。javaサーブレットが永続データを保持するのに適切な場所はどこですか? IMHO $JAVA_TEMP ディレクトリではありません。または、プログラマーが正しいので、デフォルトの Debian tomcat の動作を変更する必要がありますか?
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を参照してください。
Java サーブレットのストレージといえば、スケーラビリティーが頭に浮かびます。通常、Java サーブレットは、垂直方向のスケーリングのために、一度に複数のサーバー (Tomcat インスタンスなど) にデプロイできるように構築および設計されています。したがって、経験則として、可能な限りデータベース ストレージを使用することをお勧めします。特定のケースでは、単一のサーバーを実行しているように見えますが、必要なファイル システム上の任意の場所を使用できます。おそらく、NAS/SAN にデータを保存したいと思うでしょう。
ActiveMQ は、永続化アダプターを介してほとんどのストレージ オプションに対応できます。
このリンクでは、ActiveMQ が永続性を処理する方法とその構成方法について説明しています。これは豊富なドメインであり、多くの要件と、どのように設定したいかによって異なります。