ActiveMQ VS HornetQ
ActiveMQ和HornetQ的简介:
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
HornetQ是一个支持集群和多种协议,可嵌入、高性能的异步消息系统。HornetQ完全支持JMS,HornetQ不但支持JMS1.1 API同时也定义属于自己的消息API,这可以最大限度的提升HornetQ的性能和灵活性。在不久的将来更多的协议将被HornetQ支持。
ActiveMQ和HornetQ的比较:
特点 | HornetQ2.0GA | ActiveMQ5.3.0 |
客户端语言 | Java,JMS1.1 Stomp | Java,C#,C等jms1.1,jms1.2 |
应用协议 | STOMP | OpenWire,Stomp REST,WS Notification,XMPP,AMQP |
支持的传送协议 | TCP,SSL,HTTP等 | In-VM,TCP,SSL,NIO,UDP,JGoup,JXTA等 |
监测jms消息 | 支持 | 支持 |
消息目标队列的分类 | 使用Diverts(排他和非排他)可以使用过滤相匹配消息被转移 | 虚拟目标队列,镜像队列(队列自动复制)和复合目的地队列 |
集群 | 1. 发布消息通过广播(UDP组播)或固定客户端和服务端 2. 支持负载均衡 3. 消息的重分发:发送前,配置无消费者对消息的重新分发的参数。 4. 容错机制(failover):主备服务器(每一个主服务器只能有一个冷备份服务器) 5. 高可用性:异步日志复制从主到备(快)或者通过共享文件系统的共享存储(有没有需要复制) | 1. 发送消息通过广播(UDP组播或者零配置)或者固定的客户端和服务端。 2. 支持负载均衡 3. 容错机制(failover):主备服务器(每一个主服务器只有一个备服务器) 4. 静态或者动态的发布。 5. 针对消息的broker的重分发。 6. 高可用性:从主服务器异步日志到备份服务器(快),或者通过JDBC通过共享文件系统存储(慢)或者共享存储(有没有需要复制) |
JMX监控和管理 | 支持,包含一个web控制台 | 支持 |
JMS到JMS的Bridge的方式 | 支持,HQ到HQ和HQ到任何JMS1.1的服务器。一次只能提供一次,并保证在HQ到HQ bridges. |
|
在集群中消息组和排他性消费。 | 支持 | 支持 |
性能(Performance)测试工具 | SpecJMS 压力测试 | JMeter的性能测试 |
持久化 | 仅支持异步日志系统(journal),提供两种方式: 1. Java NIO 2. linux AIO(仅支持linux2.6以上的版本) | 支持多种方式: 1. KahaDB(比较好的可扩展性,更短的恢复时间。) 2. AMQ消息存储(快) 3. JDBC数据库(比较慢) |
安全 | 身份验证和授权的JAAS的配置文件中定义。7中不同的权限。 | JAAS的身份验证和配置文件授权。3中不同的权限(读,写,管理) |
Blob和Large消息的支持 | 支持 | 支持 |
调度传递(Schedule delivery) | 支持 | 支持(使用Schedule CronParser) |
消息转换(xml转换为对象) | 支持,但是仅仅在HQ和HQ Bridge之间。 | 支持(其中Spring提供具体的实现方案) |
异步发送 | 支持 | 支持 |
Acknowledge优化 | 前置Acknowledge | 批量Acknowledge,异步消息传递 |
生产者流程控制 | 支持(仅仅在window) | 支持(仅仅在window) |
慢消费消息的处理 | 支持 | 支持 |
拦截器架构 | 支持,在包一级传入的数据库捕获 | 支持,使用一个拦截器栈捕获传入的消息 |
通配符的支持(WildCard) | 支持 | 支持 |
XPATH的支持 | 不支持 | 支持 |
重新传递策略 | 延迟交还和DLQ | DLQ,丢失的消息将无法在交付。 |
消息优先级和权重的设置 | 不支持 | 支持 |
命令代理 | 不支持 | 支持在ActiveMQ4.2以上 |
AMQP支持 | 不支持 | 支持 |
SOAP协议Web服务的支持 | 不支持 | 支持,使用Apache Axis和CXF |
JEE应用服务整合 | 支持,使用JCA RA | 支持,使用JCA RA |
超时消息的目标地址 | 支持 | 不支持 |
检查重复的消息 | 支持 | 不支持 |
集群中服务端的负载均衡 | 支持 | 支持 |
客户端负载均衡(loadbalance) | 支持(随机和循环) | 不支持 |
客户端容错机制(failover) | 支持,自动故障转移和应用管理模式 | 支持,随机和循环使用故障转移协议 |
Vm传输 | 支持 | 支持 |
对Ajax的支持 | 未知 | 支持 |
对Spring的支持 |