ActiveMQ in Action (3)
2.3 Persistence 2.3.1 AMQ Message Store AMQ Message Storeは、ActiveMQ 5.0のデフォルトの永続化ストレージです.Message commandsはtransactional journal(rolling data logsからなる)に保存されます.Messagesはdata logsに保存され、reference storeによってインデックスされてアクセス速度が向上します.Date logsは、デフォルトのファイルサイズが32 Mの個別のdata logファイルで構成されています.メッセージのサイズがdata logファイルのサイズを超えている場合は、構成を変更してdata logファイルのサイズを増やすことができます.あるdata logファイル内のすべてのメッセージが正常に消費された場合、このdata logファイルは、次のクリーンアップで削除またはアーカイブされるようにマークされます.以下に、構成の一例を示します.
Property name
Default value
Comments
directory
activemq-data
the path to the directory to use to store the message store data and log files
useNIO
true
use NIO to write messages to the data logs
syncOnWrite
false
sync every write to disk
maxFileLength
32mb
a hint to set the maximum size of the message data logs
persistentIndex
true
use a persistent index for the message logs. If this is false, an in-memory structure is maintained
maxCheckpointMessageAddSize
4kb
the maximum number of messages to keep in a transaction before automatically committing
cleanupInterval
30000
time (ms) before checking for a discarding/moving message data logs that are no longer used
indexBinSize
1024
default number of bins used by the index. The bigger the bin size - the better the relative performance of the index
indexKeySize
96
the size of the index key - the key is the message id
indexPageSize
16kb
the size of the index page - the bigger the page - the better the write performance of the index
directoryArchive
archive
the path to the directory to use to store discarded data logs
archiveDataLogs
false
if true data logs are moved to the archive directory instead of being deleted
2.3.2 Kaha Persistence Kaha Persistenceは、メッセージの永続化に特化したソリューションです.典型的なメッセージ使用モードを最適化しました.Kahaではデータがdata logsに追加される.logファイルのデータが不要になった場合、logファイルは破棄されます.以下に、構成の一例を示します.
2.3.3 JDBC Persistence 現在サポートされているデータベースは、Apache Derby、Axion、DB 2、HSQL、Informix、MaxDB、MySQL、Oracle、Postgresql、SQLServer、Sybaseです. 使用するデータベースがサポートされていない場合は、StatementProviderを調整して、正しいSQL方言(flavour of SQL)を使用することを保証できます.通常、ほとんどのデータベースでは、次のadaptorがサポートされています. org.activemq.store.jdbc.adapter.BlobJDBCAdapter org.activemq.store.jdbc.adapter.BytesJDBCAdapter org.activemq.store.jdbc.adapter.DefaultJDBCAdapter org.activemq.store.jdbc.adapter.ImageJDBCAdapter
プロファイルにJDBCアダプタを直接指定することもできます.たとえば、次のようにします.
以下に、構成の一例を示します.
MySQLを使用する場合はrelaxAutoCommitフラグをtrueに設定する必要があります.
2.3.4 Disable Persistence 以下に、構成の一例を示します.
<broker brokerName="broker" persistent="true" useShutdownHook="false">
<persistenceAdapter>
<amqPersistenceAdapter directory="${activemq.base}/data" maxFileLength="32mb"/>
</persistenceAdapter>
</broker>
Property name
Default value
Comments
directory
activemq-data
the path to the directory to use to store the message store data and log files
useNIO
true
use NIO to write messages to the data logs
syncOnWrite
false
sync every write to disk
maxFileLength
32mb
a hint to set the maximum size of the message data logs
persistentIndex
true
use a persistent index for the message logs. If this is false, an in-memory structure is maintained
maxCheckpointMessageAddSize
4kb
the maximum number of messages to keep in a transaction before automatically committing
cleanupInterval
30000
time (ms) before checking for a discarding/moving message data logs that are no longer used
indexBinSize
1024
default number of bins used by the index. The bigger the bin size - the better the relative performance of the index
indexKeySize
96
the size of the index key - the key is the message id
indexPageSize
16kb
the size of the index page - the bigger the page - the better the write performance of the index
directoryArchive
archive
the path to the directory to use to store discarded data logs
archiveDataLogs
false
if true data logs are moved to the archive directory instead of being deleted
2.3.2 Kaha Persistence Kaha Persistenceは、メッセージの永続化に特化したソリューションです.典型的なメッセージ使用モードを最適化しました.Kahaではデータがdata logsに追加される.logファイルのデータが不要になった場合、logファイルは破棄されます.以下に、構成の一例を示します.
<broker brokerName="broker" persistent="true" useShutdownHook="false">
<persistenceAdapter>
<kahaPersistenceAdapter directory="activemq-data" maxDataFileLength="33554432"/>
</persistenceAdapter>
</broker>
2.3.3 JDBC Persistence 現在サポートされているデータベースは、Apache Derby、Axion、DB 2、HSQL、Informix、MaxDB、MySQL、Oracle、Postgresql、SQLServer、Sybaseです. 使用するデータベースがサポートされていない場合は、StatementProviderを調整して、正しいSQL方言(flavour of SQL)を使用することを保証できます.通常、ほとんどのデータベースでは、次のadaptorがサポートされています.
プロファイルにJDBCアダプタを直接指定することもできます.たとえば、次のようにします.
<jdbcPersistenceAdapter adapterClass="org.apache.activemq.store.jdbc.adapter.ImageBasedJDBCAdaptor"/>
以下に、構成の一例を示します.
<persistence>
<jdbcPersistence dataSourceRef=" mysql-ds"/>
</persistence>
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
MySQLを使用する場合はrelaxAutoCommitフラグをtrueに設定する必要があります.
2.3.4 Disable Persistence 以下に、構成の一例を示します.
<broker persistent="false">
</broker>