activemq的消息存储机制 |
ctiveMQ是当下最流行和强大的开源企业消息集成组件。 ActiveMQ性能优良,支持多种跨语言的客户端和协议,支持JMS1.1和J2EE1.4,易于使用并且特性多多。 ActiveMQ基于Apache 2.0 License软件协议。 当前最新版本为5.2.0(目前最新的是5.13.X) 最新特性:
ActiveMq5.2.0 对JDK的要求是 JDK 5 and later。如果要搭建MQ服务,那么在目标机器上必须设置JAVA_HOME变 量,指向JDK的安装目录。 依赖: 要正常使用ActiveMq的功能至少需要activemq-core.jar、commons-logging.jar、J2EE API。 AMQ Message Store 是什么? 默认的activemq消息存储是通过一个所谓的AMQ Message Store来完成。 AMQ Message Store是一个高效的可嵌入支持事务的消息存储解决方案。 在此方案下消息(Message)本身以日志的形式实现持久化,存放在Data Log里。并且还对日志里的消息做了引用索引,方便快速取回Message。 一般情况下消息索引存放于内存(Cache)中,MQ Server定期将索引内容持久化,存放到Reference Store。 Message Data Log文件是有容量限制的,默认是32MB,可自行配置容量。当该Data Log文件里所有消息都被消费完的时候,Data Log文件就会被加上一个标记,通知下一次消息清理时可以被处理掉(处理方式可以是delete或是转移到Achieve目录)。 AMQ Message Store方案中 Cache 、Data Log、Reference Store 协作图如下:
AMQ Message Store的属性是可以配置的,你可以在conf/activemq.xml配置文件里添加上如下配置: Xml代码 属性说明 AMQ Message Store体系中 目录结构参照下图 :
顶层目录broker name 用broker name命名,默认目录名是localhost,broker name在activemq的配置文件里指定,以下是它的子目录: archive 丢弃的Data Log就放到这里,当archiveDataLogs 属性配置为true时才会存在 journal message data log的所在 kr-store reference store 目录 data 引用索引所在目录 state 记录store的状态 tmp-storage 用来存储一些事物性的消息以减轻内存的负担例如等待正常但是速度很慢的消费端来消费非持久化的Topic. 其他持久化方式 activemq同样支持JDBC持久化Message,我们只需要把配置层 Xml代码 改成AMQ Message Store and JDBC(推荐,同时使用两者可以同时保证效率和可靠性): Xml代码 或是 JDBC only(现阶段不推荐,单独的JDBC存储效率不高): Xml代码 Oracle数据源的配置如下: Xml代码 其他数据源配置参照Activemq的文档。 |


















