/**
* 转载请注明作者longdick http://longdick.iteye.com
*
*/
ActiveMQ是当下最流行和强大的开源企业消息集成组件。
ActiveMQ性能优良,支持多种跨语言的客户端和协议,支持JMS1.1和J2EE1.4,易于使用并且特性多多。
ActiveMQ基于Apache 2.0 License软件协议。
当前最新版本为5.2.0
最新特性:
-
多语言多协议支持,Java、C、C++、C#可以通过OpenWire协议编写高效的客户端;
-
Stomp协议的支持使得我们可以用Ruby、Perl、Python、AS等等语言方便的编写客户端程序。
-
通过集成Apache Camel 库,中间件和客户端可以完全支持Enterprise Integration Patterns(企业集成模式)
支持许多高级特性如:消息群组(Message Groups)、虚拟端点(Virtual Destinations)、通配符(Wildcards)、复合端点(Composite Destinations)等
-
完全支持JMS1.1和J2EE1.4规范包括对临时、持久、XA事务消息的支持
-
spring支持JMS规范,所以Acticemq可以集成到spring,集中管理。
-
在支持J2EE1.4规范的多个流行J2EE服务器上通过测试。
-
可插拔的传输协议支持 比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports
-
支持超快的JDBC消息持久化和高效的日志系统
-
为高效服务集群、客户服务机、基于点通信系统而设计。
-
REST-ful支持。
-
Ajax支持。
-
对CXF和Axis的支持可以帮助Activemq通过web service来提供可靠的消息服务。
-
等等。。。
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配置文件里添加上如下配置:
<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.
其他持久化方式
activemq同样支持JDBC持久化Message,我们只需要把配置从
<persistenceAdapter>
<amqPersistenceAdapter directory="activemq-data" maxFileLength="32mb"/>
</persistenceAdapter>
改成AMQ Message Store and JDBC(推荐,同时使用两者可以同时保证效率和可靠性):
<persistenceAdapter>
<journaledJDBC dataDirectory="${activemq.base}/data" dataSource="#oracle-ds"/>
</persistenceAdapter>
或是 JDBC only(现阶段不推荐,单独的JDBC存储效率不高):
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#oracle-ds"/>
</persistenceAdapter>
Oracle数据源的配置如下:
<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
其他数据源配置参照Activemq的文档。
参考资料来自官方网站:
http://activemq.apache.org
分享到:
相关推荐
AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。Producer客户端使用来发送消息的,Consumer客户端...
网盘文件永久链接 1:ActiveMQ入门和消息中间件 2:JMS基本概念和模型 3:JMS的可靠性机制 4:JMS的API结构和开发步骤 ...8:ActiveMQ消息存储持久化 9:ActiveMQ的静态网络链接 10:多线程consumer访问集群 ..........
本文档总结了Activemq的所有特性,包括整体架构、消息传输原理、部署、消息存储和通讯机制,文字结合图示,读了这个文档,会对Acitvemq有个非常透彻的了解
六: ActiveMQ的消息存储 包括:队列和topic、KahaDB、AMQ、JDBC、MMS等 n 七: ActiveMQ的Network 包括:在一台服务器启动多个Broker;静态网络连接的功能、配置等;“丢失” 消息的处理;容错或可负载均衡的连接;...
详解RabbitMQ消息分发机制及主题消息分发 RabbitMQ消息路由机制分析 RabbitMQ消息确认机制 Redis redis数据结构分析 Redis主从复制原理及无磁盘复制分析 Redis管道模式详解 Redis缓存与数据库一致性问题解决...
当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,而部分数据库如Redis、MySQL以及phxsql也可实现消息队列的功能。消息队列是指利用高效可靠的消息传递机制进行与平台无关的数据...
该项目是一个物流配货平台,提供货运管理、配货管理...5. ActiveMQ实现消息队列,推送配送任务等 6. 前端使用JSP、jQuery、BootStrap实现用户交互界面 7. 货运管理、配货计划等业务流程实现 8. 权限控制和安全管理机制
应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等...MQ衡量标准服务性能、数据存储、集群架构主流竞品分析当前市面上mq的产品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的...
用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件...
【消息队列】ActiveMQ中的消息重发时间间隔和重发次数吗? 164 【Dubbo】dubbo介绍 166 Dubbo 是什么 166 Dubbo 架构流程图 167 调用流程 167 注册中心 168 Dubbo常识 168 【Dubbo】dubbo运行时,突然所有的zookeeper...
如何使用分布式消息系统ActiveMQ来降低系统之间的耦合度,以及进行应用间的通信。 垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具...
│ 第111节:理解文档存储机制.avi │ 第112节:MongoDB的索引一.avi │ 第113节:MongoDB的索引二.avi │ 第114节:Capped集合和GridFS.avi │ 第115节:MongoDB的副本集一.avi │ 第116节:MongoDB的副本集二.avi ...
ActiveMQ 常用开源框架 Spring Spring MVC Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 ...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...