ActiveMQ 中的持久化主要有以下几种方式:
- KahaDB:默认的持久化方式,基于日志文件和索引文件存储消息,速度较快。
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
- JDBC:基于数据库存储消息,设置较复杂但更具可靠性。
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="true"/>
</persistenceAdapter>
- LevelDB:基于 LevelDB 存储消息,性能较好但需设置最大消息存储数。
<persistenceAdapter>
<levelDB directory="${activemq.data}/leveldb" maxMessages="100000"/>
</persistenceAdapter>
- Memory:基于内存存储消息,消息重启丢失但速度最快。
<persistenceAdapter>
<memoryPersistenceAdapter/>
</persistenceAdapter>
各种持久化方式的区别如下:
| 方式 | 速度 | 可靠性 | 配置复杂度 |
| :-------- | :----- | :---- | :----|
| KahaDB | 中 | 高 | 低|
| JDBC | 低 | 最高 | 中|
| LevelDB | 高 | 中 | 中|
| Memory | 最高 | 最低 | 最低|