ActiveMQ是Apache的一个顶级Java开源项目,也是目前最流行的,能力强劲的开源消息队列。ActiveMQ是比较老牌的MQ,2004年由Apache开源孵化,2007年成为Apache顶级项目。最新版本已经更新到5.10.0,TA拥有众多特性:
支持Java,C/C++,C#,Ruby,Perl,Python,PHP等多种语言实现客户端和协议。
完全支持企业集成模式。
支持消息分组、虚拟目标及复合目标等高级特性。
完全支持JMS1.1,和J2EE1.4(持久化、事务,及XA消息)。
提供对Spring的支持,可以很容易内嵌到使用Spring的系统中。
通过了常规的J2EE服务器(如TomEE、Geronimo、Jboss、GlassFish、WebLogic等)的测试。
支持多种传输协议,如:in-VM、TCP、SSL、NIO、UDP、multicast、Jgroups、JXTA等。
支持通过JDBC和journal提供高速的消息持久化。
从设计上保证了高性能的集群、客户端-服务器、点对点通信。
支持基于Web的API及其他方式的REST调用。
支持Ajax。
支持CXF和Axis。
支持用作内嵌JMS provider,进行测试。
ActiveMQ的使用分为两种,一种是嵌入式,即把ActiveMQ作为内嵌的JMS provider集成到Tomcat或其他Web服务器中;另一种是独立部署,即ActiveMQ单独部署,独立运行,通过ActiveMQ提供的API进行进程外访问。我们采用独立部署的方式使用ActiveMQ,这样的做法更有利于业务的解耦和工程部署结构的分离;也有利于对ActiveMQ进行配置定制和优化。我们知道JMS规范中约定了两种消息发送方式:P2P和Publish/Subscribe。
默认的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配置文件里添加上如下配置:
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>
</persistenceAdapter>
属性说明
property name | default value | Comments |
directory | activemq-data | 存储消息文件和日志的目录 |
useNIO | true | 使用 NIO 特性 |
syncOnWrite | false | 同步写文件到磁盘 |
maxFileLength | 32mb | Message Data日志文件的最大 Size |
persistentIndex | true | 持久化日志索引,如果设为 false ,则在内存中保存 |
maxCheckpointMessageAddSize | 4kb | 在自动提交前在事务中能保持的最大消息数 |
cleanupInterval | 30000 | 每隔多少时间清理不再使用的消息日志(毫秒) |
indexBinSize | 1024 | 这个值是用来提升索引的性能的,值越大,索引相对性能越好 |
indexKeySize | 96 | index key的size,index key基于message id |
indexPageSize | 16kb | 索引页的size |
directoryArchive | archive | 消费完的Data Log存放的目录 |
archiveDataLogs | false | 设置为true的话,消费完的Data Log就放到Archive目录,而不是删除。 |
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.
安装(参考:):
1.安装jdk环境略
2.下载安装activemq
下载:wget http://mirrors.cnnic.cn/apache/activemq/5.10.0/apache-activemq-5.10.0-bin.tar.gz
tar -zxvf apache-activemq-5.10.0-bin.tar.gz
cd ./apache-activemq-5.10.0/bin
./activemq start #启动
./activemq stop #关闭
查看控制台http://127.0.0.1:8161/admin, 默认端口:8161 默认用户:admin/admin 配置在conf/users.properties
参考:http://longdick.iteye.com/blog/444632