一、消息的存储方式
ActiveMQ支持JMS规范中的持久化消息与非持久化消息
持久化消息通常用于不管是否消费者在线,它们都会保证消息会被消费者消费。当消息被确认消费后,会从存储中删除
非持久化消息通常用于发送通知以及实时数据,通常要求性能优先,消息可靠性并不是必须的情况
MQ支持可插拔式的消息存储,如:内存、文件和关系数据库等方式
Queue消息模型在ActiveMQ的存储
采用存储采用先进先出(FIFO),一个消息只能被一个消费者消费,当消息被确认消费之后才会被删除。
Topic消息模型(针对持久订阅)
每个订阅者获取的消息实际是消息的一个副本,只有一个消息副本会被存储,MQ提供了一个指针来指向消息存储并且分发消息副本到订阅者,消息直到所有的持久化订阅者都被接收才能被删除。
持久化存储方式:
KahaDB消息存储
AMQ消息存储
JDBC消息存储
内存消息存储
二、KahaDB存储方式
KahaDB是从ActiveMQ 5.4开始默认的持久化插件。KahaDb恢复时间远远小于其前身AMQ并且使用更少的数据文件,所以可以完全代替AMQ,kahaDB的持久化机制同样是基于日志文件,索引和缓存。
(一)、KahaDB主要特性:
日志形式存储消息;
消息索引以B-Tree结构存储,可以快速更新;
完全支持JMS事务;
支持多种恢复机制;
(二)、适用场景:
高吞吐量的应用程序
存储大数据量的消息
(三)、配置方式 conf/activemq.xml:
网友评论