`
zhaohaolin
  • 浏览: 1011176 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ActiveMQ与MSMQ的异同【转】

    博客分类:
  • JMS
阅读更多

.NET下发送和接收ActiveMQ

    A:下载ActiveMQ,地址http://activemq.apache.org/download.html  

    B:执行/bin/win32/InstallService.bat.在Windows服务中可以看到名称为ActiveMQ的服务被建立。它提供了管理工具http://localhost:8161  

    A:下载.netAPI。http://activemq.apache.org/nms/ 。主要涉及两个DLL,Apache.NMS.ActiveMQ.dll和Apache.NMS.dll。需要自己从下载的文件中提取文件另建工程编译出这两个类库。同时下载的文件主要有两部分源代码和测试代码

    B:引入DLL建立测试工程。一下列出发送和收取的代码

代码

 

ActiveMQ和MSMQ的异同

1 :发送的内容

ActiveMQ 可以发送值类型也可以发送引用类型,而MSMQ只能发送值类型。

2 :消息的格式

ActiveMQ 支持的消息格式有

ITextMessage

IMapMessage Key-Value 消息

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的划分为

        Lowest = 0,

        VeryLow = 1,

        Low = 2,

        AboveLow = 3,

        BelowNormal = 4,

        Normal = 5,

        AboveNormal = 6,

        High = 7,

        VeryHigh = 8,

    Highest = 9,

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个用户发送接收性能对比

       队列为空的情况下

       ActiveMQ 发送并接收1k,10k,100k总量为8W,4w,6K,平均每秒300,100,30条

       Msmq 发送并接收1k,10k,100k总量为29w,7.9w,1.1w平均每秒900,250,40条

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 发送容量

       ActiveMQ 单条发送100*1024*1024字节数据出错,90*1024*1024正常

       ActiveMQ 单条发送2*1024*1024字节数据出错,1*1024*1024正常

发送速率

       队列为空

       ActiveMQ 发送1K数据耗费260MS,10K278MS,100K300MS

       MSMQ 发送1K数据耗费290MS,10K319MS,100K350MS

       队列长1000

       ActiveMQ 发送1K数据耗费312MS,10K356MS,100K266MS

       MSMQ 发送1K数据耗费10MS,10K10MS,100K11MS

       队列长1w

       ActiveMQ 发送1K数据耗费313MS,10K272MS,100K351MS

       MSMQ 发送1K数据耗费10MS,10K10MS,100K11MS

       队列长10w

       ActiveMQ 发送1K数据耗费350MS,10K340MS,100K322MS

       MSMQ 发送1K数据耗费11MS,10K11MS,100K14MS

       队列长100w

       ActiveMQ 发送1K数据耗费339MS,10K340MS,100K346MS

       MSMQ 发送1K数据耗费10MS,10K11MS,100K14MS

       队列长1000w

       ActiveMQ 发送1K数据耗费754MS,10K733MS,100K758MS

       MSMQ 报错“资源不足“

       队列长2100w

       ActiveMQ 发送1K数据耗费782MS,10K792MS,100K782MS  

 一些结论

1 :ActiveMQ尽量少的建立连接,多次发送可以共用一个连接。如果每次都建立连接进行发送那么它和MSMQ没有可比性,即MSMQ性能远远高于ActiveMQ。但是如果减少连接申请那么它性能原高于MSMQ。

2 :ActiveMQ的消息容量远高于MSMQ

3 :ActiveMQ在发送和接收同步的时候效率最高

4 :ActiveMQ在大容量(百万级别)表现更高的性能

5 :ActiveMQ更灵活的操控和扩展

更加详尽的ActiveMQ性能测试/Files/tommyli/ActiveMQ测试报告.pdf  

if ($ != jQuery) { $ = jQuery.noConflict(); }

分享到:
评论

相关推荐

    MSMQ、RabbitMQ、ActiveMQ消息队列调试工具

    可用于调试MSMQ、RabbitMQ、ActiveMQ三种消息队列 其中MSMQ支持Active、Binary、XML格式(要勾选事务) RabbitMQ支持逐条接发、批量接发、RPC回调模式、新建队列、建立持久化队列、连接测试等功能。

    activemq与tomcat整合

    本篇将详细介绍如何将ActiveMQ与Tomcat进行整合,以便在Web应用程序中利用ActiveMQ的消息传递功能。 首先,我们需要了解ActiveMQ和Tomcat的基本概念。ActiveMQ是Apache软件基金会开发的一款开源JMS(Java Message ...

    ActiveMQ5.13 安装与配置

    "ActiveMQ5.13 安装与配置" ActiveMQ 是 Apache 软件基金会提供的一个开源message broker,能够实现点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)模式的消息传递。ActiveMQ 5.13 是 ActiveMQ 的一个...

    activeMQ 与 quartz 事例

    "activeMQ 与 quartz 事例" 这个标题表明我们要探讨的是两个在Java开发中常用的开源工具——ActiveMQ和Quartz。ActiveMQ是Apache软件基金会的一个项目,它是一个开源的消息中间件,用于处理消息传递。而Quartz则是...

    ActiveMQ与Tomcat整合教程

    【ActiveMQ与Tomcat整合教程】是关于如何在Apache Tomcat服务器中集成开源消息中间件ActiveMQ的详细步骤。这个教程适用于Tomcat 6.0.14版本,但请注意不同版本可能存在配置上的差异。 首先,为了使Tomcat能够识别和...

    msmq.rar_java msmq_java 消息队列_java消息队列_msmq_消息队列

    要使用Java连接到MSMQ,你需要一个支持MSMQ的JMS提供者,例如Apache ActiveMQ或IBM WebSphere MQ。这些提供者通常会提供特定的适配器或者驱动程序来与MSMQ交互。 创建消息队列的步骤如下: 1. **安装MSMQ服务**:...

    ActiveMQ与Spring线程池整合实例

    ActiveMQ与Spring线程池整合的一个实例。 lib库没有上传。 对于实例的讲解,在竹子的论坛有我对这个实例的帖子(http://www.java2000.net/viewthread.jsp?tid=1167) lib中包含: apache-activemq-4.1.1.jar ...

    activemq与spring整合源代码

    《ActiveMQ与Spring整合源代码解析》 ActiveMQ和Spring的整合是企业级应用中常见的一种技术组合,尤其在分布式系统和微服务架构中,消息队列(Message Broker)如ActiveMQ扮演着至关重要的角色。它能有效地实现系统...

    ActiveMQ的安装与使用

    接下来我们将详细阐述ActiveMQ的安装与使用过程,包括安装前提条件、安装步骤、配置和启动以及安全配置等知识点。 首先,安装ActiveMQ之前需要有一个Java运行环境。这是因为ActiveMQ是使用Java开发的。JDK(Java ...

    ActiveMQ与REST API实践

    **ActiveMQ与REST API实践** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息中间件标准——Java Message Service(JMS)。ActiveMQ以其高性能、稳定性和丰富的特性在分布式系统中广泛使用,...

    ActiveMQ与spring整合封装

    本篇将详细讲解如何将ActiveMQ与Spring进行整合封装,实现高效、便捷的消息服务。 首先,ActiveMQ与Spring的整合主要基于Spring的JMS(Java Message Service)支持。Spring通过`ConnectionFactory`和`Destination`...

    activemq与spring的整合案例

    将ActiveMQ与Spring进行整合,可以方便地在Spring应用中使用消息队列功能。 本案例主要展示了如何在Spring应用中集成ActiveMQ,实现消息的发送和接收。首先,我们需要在项目中引入ActiveMQ的相关依赖。在Maven工程...

    ActiveMQ与Spring整合示例Demo

    **ActiveMQ与Spring整合详解** ActiveMQ是Apache组织开发的一款开源消息中间件,它遵循Java消息服务(JMS)规范,提供可靠的消息传递和高效的消息处理能力。在企业级应用中,ActiveMQ常用于实现应用之间的解耦,...

    activemq 配置说明与activemq入门讲解

    2. **JMS编程**:使用JMS API与ActiveMQ交互,创建ConnectionFactory,然后创建Connection,Session,Destination(Queue或Topic),最后创建MessageProducer和MessageConsumer。 3. **Web控制台**:ActiveMQ内置了...

    ActiveMQ与Zookeeper集群测试代码

    标题中的“ActiveMQ与Zookeeper集群测试代码”指的是一个实验或示例项目,旨在演示如何结合这两个组件来构建高可用的消息传递环境。Zookeeper在这里的角色可能是用来管理ActiveMQ集群的状态,实现节点间的选举和故障...

    activeMQ收发工具.rar

    ActiveMQ收发工具利用JMS接口与ActiveMQ服务器进行通信。 2. **消息模型**:掌握点对点(Queue)和发布/订阅(Topic)两种消息模型。点对点模型确保每个消息仅被一个消费者接收,而发布/订阅模型允许多个订阅者接收...

    ActiveMQ与spring集成实例之使用Maven构建

    标题中的“ActiveMQ与Spring集成实例之使用Maven构建”是指在Java开发环境中,通过Maven构建工具将Apache ActiveMQ消息中间件与Spring框架整合在一起的实际操作案例。这个主题涵盖了几大关键知识点: 1. **Apache ...

    activeMQ与spring整合开发的例子程序

    本例子程序的主题是"activeMQ与spring整合开发",这意味着它将展示如何在Spring应用中集成ActiveMQ,以便利用消息队列进行异步通信和解耦组件。以下是一些关键知识点: 1. **Spring集成ActiveMQ的基本配置**:在...

    JMS之ActiveMQ与Spring整合源码

    将ActiveMQ与Spring整合,可以方便地在Spring应用中使用JMS,实现消息驱动的架构。 本文将深入探讨ActiveMQ与Spring整合的关键知识点: 1. **Spring对JMS的支持**: Spring提供了`org.springframework.jms`包,该...

    ActiveMQ与Tomcat整合

    **ActiveMQ与Tomcat整合详解** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循JMS(Java Message Service)规范,用于处理应用程序之间的异步通信和消息传递。而Tomcat是一款流行的开源Web服务器和...

Global site tag (gtag.js) - Google Analytics