一、消息的存储方式
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:
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26