1:发送的内容
ActiveMQ可以发送值类型也可以发送引用类型,而MSMQ只能发送值类型。
2:消息的格式
ActiveMQ支持的消息格式有
ITextMessage
IMapMessage
IBytesMessage
IObjectMessage
IStreamMessage
MSMQ支持的消息格式有
XmlMessageFormatter
BinaryMessageFormatter
ActiveXMessageFormatter
2:消息的划分
MSMQ将消息划分为
用户队列(1公共队列:在整个“消息队列”网络中复制,并且有可能由网络连接的所有站点访问。2专用队列”不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。3“管理队列”包含确认在给定“消息队列”网络中发送的消息回执的消息。4“响应队列”包含目标应用程序接收到消息时返回给发送应用程序响应消息。)
系统队列(1“日记队列”可选地存储发送消息的副本和从队列中移除的消息副。2“死信队列”存储无法传递或已过期的消息的副本。3“报告队列”包含指示消息到达目标所经过的路由的消息,还可以含测试消息。每台计算机上只能有一个报告队列。4“专用系统队列”是一系列存储系统执行消息处理操作所需的管理和通知消息的专用队列。
ActiveMQ没有类似的划分
3:消息的等级
MSMQ将消息等级进行如下划分
Lowest = 0,
VeryLow = 1,
Low = 2,
Normal = 3,
AboveNormal = 4,
High = 5,
VeryHigh = 6,
Highest = 7,
而ActiveMQ的划分为
4:Active支持软件级别的负载均衡而MSMQ不支持。
A:都支持事务
B:都支持同步和异步两种接收方式
C:消息都具有快递方式和可恢复方式(永久存储)。对于快递方式稍有差异MSMQ的快递方式只有在删除,重启机器的时候消息才会销毁而ActiveMQ可以设置保存一定时间后销毁。
D :都支持点对点和发布订阅两种模式
ActiveMQ和msmq性能对比
机器配置:CPU 双核 2.83GHZ,内存 1.98GB OS windows2003 SP2
1 启动停机测试
ActiveMQ
重启
20W数据需要1分钟,100W在3分钟,200W在10分钟左右。
这里需要说明的是,恢复时间主要消耗在kaha上,如果使用jdbc存储,所有恢复时间都在1分钟之内。
停机
amq停机速度很快,基本没有出现过需要强制kill的情况
MSMQ
无论重启或是停机在20W,100W已及200W数据下都瞬间完成。但是清空百万级别的队列操作无法响应,必须KILL进程。(有时导致死机)
2 5分钟内25个用户发送性能测试对比
队列为空的情况下
ActiveMQ发送1k,10K,100K发送总量为5k,4.5k,4.2K平均每秒发送19,15,15
MSMQ发送1k,10k,100k发送总量为42w,31w,8,6w平均每秒发送1.4K,1k,286
25个线程1分钟Active发送1k,10K,100K发送总量为20w,12w,5K
队列为1W(时间为1分钟)
多线程ActiveMQ发送1k,10K,100K发送总量为17w,12w,1.6w
MSMQ发送接收1k,10k,100k发送总量为5.8w,1.4w,1.3k平均每秒发送956,230,20
队列为10W(时间为1分钟)
多线程ActiveMQ发送1k,10K,100K发送总量为13w,7w,2.5w
MSMQ发送1k,10k,100k发送总量为6.3w,1.4w,1.2k平均每秒发送1k,236,19
3 5分钟内25个用户发送接收性能对比
25个线程1分钟Active发送接收1k,10K,100K发送总量为35w,12w,1.1w
队列为1W(时间为1分钟)
多线程ActiveMQ发送接收1k,10K,100K发送总量为32w,12w,2w
MSMQ发送1k,10k,100k发送总量为5w,1.2w,1k平均每秒发送800,190,19
队列为10W(时间为1分钟)
多线程ActiveMQ发送接收1k,10K,100K发送总量为34w,13w,2.5w
MSMQ发送接收1k,10k,100k发送总量为4.6w,1.2w,1k平均每秒发送743,205,18
4 发送容量
5 发送速率
1:ActiveMQ尽量少的建立连接,多次发送可以共用一个连接。如果每次都建立连接进行发送那么它和MSMQ没有可比性,即MSMQ性能远远高于ActiveMQ。但是如果减少连接申请那么它性能原高于MSMQ。
2:ActiveMQ的消息容量远高于MSMQ
3:ActiveMQ在发送和接收同步的时候效率最高
4:ActiveMQ在大容量(百万级别)表现更高的性能
5:ActiveMQ更灵活的操控和扩展