几个月之前刚刚调研这部分时写的,有些东西已经和目前的理解不一样了,仅留存。可部分参考。
版本
H
:
2.0GA
Activemq
:
5.4.2(5.5
不支持
1.5
,支持
1.6
了
)
JORAM
:
5.5
Popular
Goolge
搜索
openmq
,找到约
110,000
条结果
Goolge
搜索
activemq
,找到约
3,510,000
条结果
Goolge
搜索
Joram
,找到约
1,380,000
条结果
Goolge
搜索
Hornetq
,找到约
429,000
条结果
Activemq
官网声称:
Apache
ActiveMQ
™ is the most popular
and powerful
open source messaging and Integration Patterns
server
Architecture
JORAM: OSGi
OPENMQ: ??
Hornetq:
有自己的内核,和
JMS
无关,有可能是这个内核使得性能很好
ActiveMQ
:
OSGi
?
Powerful
Specification
都符合:
JMS 1.1 Specification
Java EE 1.4 support (JCA 1.5 Resource
Adapter)
Language clients
ActiveMQ much more than OpenMQ, which
support only java, c
ActionScript 3
Ajax
C
C++
C# and .Net
Delphi and Delphi/FreePascal
Erlang
Flash / ActionScript
Haskell
JavaScript - Ajax or WebSockets
Perl
PHP
Pike
Python
Ruby and Rails support via ActiveMessaging
Smalltalk
WebSockets
大部分是通过
stomp
来实现的其他语言互通,比较
cool
的是
WebSockets
(基于
stomp
),是
HTML 5
引入的一个东东。其他如
Ajax
是通过
Servlet
。
还有一部分是通过
OpenWire
。
Enterprise Integration Patterns
只有
A
提了这么个概念。
使用
Apache Camel
实现和其他企业应用组件的互联。
见
http://interview.group.iteye.com/group/wiki/1858-apache-camel
:
对于企业应用来说,由于历史或者多厂商等原因造成了其系统之间的通讯协议多样化,而由于企业业务发展,这些应用系统之间交互需求日益增多。
Apache Camel
可以帮助大家通过定义简单的路由规则来实现不同企业应用之间的互联互通。
Apache Camel
把不同的企业应用抽象成为
Endpoint
,
通过
URI
来对这些
Endpoint
进行描述,由于
Apache
Camel
提供了一个基于
POJO
的企业应用模式
(Enterprise Integration Patterns)
的实现,同时
Camel
提供了
60
多个组件来负责具体的传输协
议,这样用户可以通过简单的消息路由规则定义,就可以实现各应用系统之间交互。
简单来说如果你有一个应用只提供一个
JMS
接口,
而你的另一个应用提供
WebServices
接口,那你的路由规则可以这么定义:
from("jms://xxxx").to("cxf://xxxx)
【注】
Camel
通过
CXF
提供了对
WebService
的支持。
当然你有可能需要对
JMS
接口过来的消息做一些处理在转发给
WebService
应用。
那你只需在两个节点之间要加入一个
processor
来实现你需要做的处理就行了
from("jms://xxxx").processor(new
MyProcessor()).to("cxf://xxxx")
由上面的例子可以看到
Camel
的路由规则很直观简单,你可以像写
Java
代码一样定义路由规则。这得益于
Camel
的创建者
James Strachan
(他也是
Groovy
的创建者)的贡献。
互操作
Protocols
我理解这部分就是指的互操作。
Stomp
O and A and H
都支持。
http://wikis.sun.com/display/GlassFish/OpenMQStompConnect
AMQP
http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
activemq
和
JORAM
支持,
H
在
2.0GA
还没有,
O
没有。
RESTful
API
我理解是指用
HTTP
的方式暴露出
JMS
资源等服务的方式,
activemq
支持,
H
在
2.0GA
还没有,
O
可以有,但看起来支持的不全面,如下文:
OpenMQ
provide different transport protocol and access
channels to access OpenMQ functionalities from different prgramming . One of
the access channles which involve HTTP is named Universal
Message Service (UMS)
which provide a simple REST interaction template to
place messages and comsume them from any programming language and device which
can interact with a network server. UMS has some limitations which is simply
understandable based on the RESTful nature of UMS. For current version of
OpenMQ, it only supports Message Queues as destinations so there is no
publish-subscribe functionality available.
其他
A
支持的互操作协议:
可以看出
A
对这部分的支持远远完善于其他产品。
Flow Control
见:
http://www.c2b2.co.uk/iPoint/ipoint?SelectedPage=69&110ArticleID=17
When overloaded with messages, JBoss MQ and
JBoss messaging suffered failures that brought the whole application server
down. OpenMQ, in contrast, prevented the client from sending any more messages
once the message queue reached a size limit. This behaviour protected the
application server from failure.
这点之前的性能测试中出现过,超过某个值,
mq
不再处理消息了。这点很好,尤其在
embeded
模式的时候。
流量控制我觉得和这个是一个东西:
H
和
J
都有比较好的流量控制,可以指定客户端发送条数或发送速率,
A
也不差。这部分我觉得也比较重要,可以测试一下。
有趣的是,
H
和
J
的功能写的很像,有的句子几乎一样:)
http://community.jboss.org/wiki/HornetQFeatures
http://joram.ow2.org/features.html
Producer
flow control.
JORAM provides a flow control mechanism to prevent clients overwhelming a
server with messages. On a per connection basic you can specify the maximum
rate, that a producer is allowed to send messages at.
Large Message
H
对这点很自信,可以支持
8G
消息,内存只有
50m
。
Huge
message support
Send and receive multi-gigabyte messages fully reliably and transactionally
even though your server might be running in only 50MiB of RAM!
We have tested up to 8GiB but theoretically you should be able to send /
consume messages up to 2^63-1 bytes in size, assuming you have sufficient disk
space, which is quite unlikely
.
message persistence
消息持久化的支持上,
H
也很自信
HornetQ provides message persistence using
its own built-in, high performance journal.
HornetQ has no dependency on clunky, slow, relational databases for
persistence.
关系型数据库太慢之类的,
A
好像还得用数据库。
The journal is a unique piece of technology that automatically detects if
running on Linux and uses Linux Asynchronous IO (AIO) via a native code layer
for astonishing performance.
If AIO is not available seamlessly falls back to using Java NIO, so will run
seamlessly on any Java platform.
Watch our competitors weep when they see it fly
J
也挺自信,而且可以换持久化实现
:
JORAM provides message persistence using
its own built-in high performance journal.
The JORAM persistence system is completely pluggable, it defines a Service
Provider Interface (SPI) that you can implement in order to plug-in a new
implementation.
JORAM is shipped with additionnal persistence modules using relational
databases for example.
Monitoring
三个都有,我认为
openmq
这部分做得够用了,甚至是很好了。
advisory messages
是
A
提供的,比
JMX
更高级一些的诊断和监控,见《
ActiveMQ in Action
》一书,第
14.1.2
节:
for more complex events such as sending
messages to a
destination without a consumer, advisory
messages must be explicitly enabled.
如检测没有消费者订阅的
topic
,这部分需要自己定义监听器。
留待验证。
Performance
H
使用第三方机构提供的测试,测试用例为复杂用例是一个超市公司的用例。见
http://www.spec.org/jms2007/results/res2010q1/jms2007-20100119-00015.html
看样子
H
是最高的,需要测试。
HA
除了
O
没有(土),其他都有,一般都是共享磁盘和数据备份(只备份持久化的消息)。需要测试这个的功能。
其他记录
http://wikis.sun.com/display/GlassFish/OpenMQGlassfishQuestions
如何打印
ra
的日志
http://www.infoq.com/cn/articles/AMQP-RabbitMQ
AMQP
和
RabbitMQ
入门
http://community.jboss.org/wiki/HornetQOnJetty
集成
HornetQ
到
Jetty
更多关于集成
HornetQ
:
http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/appserver-integration.html
http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/embedding-hornetq.html
http://www.iteye.com/news/10147-maven-hornetq-jboss
http://fendou.org/2010/05/20/amqp-instruction/
AMQP
协议介绍
http://java.dzone.com/news/jms-over-http-using-openmq-sun
有
RESTful
字眼
http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
AMQP
分享到:
相关推荐
五、常见消息中间件对比 1. RabbitMQ:基于AMQP协议,支持多种语言,适合小型项目和开发测试。 2. Apache Kafka:专为大规模数据流设计,适合实时数据处理和日志收集。 3. RocketMQ:阿里巴巴开源,适用于大规模...
本文将对比三种经典的消息中间件:MQ(IBM出品)、JMS(Java消息服务)和TIBCO Rendezvous(TIBCO RV),探讨它们在功能、架构、消息传输方式等方面的差异。 首先,**消息中间件的基本功能**包括: 1. **异步通信**...
3. **技术选型**:对比分析各种消息中间件的优缺点,如RabbitMQ的AMQP协议、Kafka的高吞吐量特性、ActiveMQ的易用性等,帮助读者选择适合的中间件。 4. **实战教程**:提供从安装、配置到实际编程的步骤,可能包括...
### TIBCO Rendezvous (TIBCO RV) 与 IBM MQ 及 JMS 消息中间件的对比分析 #### TIBCO Rendezvous 技术简介 TIBCO Rendezvous(简称TIBCO RV)是一款强大的中间件产品,它通过一系列专有的技术,实现了异构系统...
### Java消息服务的消息中间件的研究与设计 #### 一、引言 随着分布式计算环境的日益普及和技术的进步,异构系统间的通信问题逐渐成为关注焦点。消息中间件作为一种解决这一问题的有效手段,其重要性日益凸显。...
#### 消息中间件的定义与功能 消息中间件(Message-oriented Middleware, MOM)是一种基础软件设施,专注于在分布式系统之间发送和接收消息。它通过提供高效可靠的消息传递机制来促进不同平台间的无缝数据交换,并...
本文将对比分析三个经典的消息中间件:MQ(IBM出品)、JMS(JAVA消息服务)和TIBCO Rendezvous(RV)。 首先,这三种中间件都提供了基本的消息处理功能,如异步消息传递、发布订阅模型、消息持久化以及网络传输优化...
本文将对比分析三个经典的消息中间件:MQ(IBM出品)、JMS(Java Message Service)以及TIBCO Rendezvous(简称RV)。 1. **消息中间件基本功能** - **异步通信**:所有这三种中间件都能实现消息的异步发送和接收...
首先,根据提供的描述,分布式消息中间件的评测模型是一个全面的评估框架,涵盖了12个主要类别,包括开源许可证、行业认可度、产品活力、服务支持、安全性、兼容性、可维护性、可扩展性、功能性、可靠性、易用性及...
1. **ActiveMQ**:ActiveMQ是Apache软件基金会的一个开源项目,是一款高效、灵活且功能丰富的消息中间件,它支持多种协议,如OpenWire、STOMP、AMQP、MQTT等,用于在分布式系统中进行可靠的消息传递。 2. **Java ...
### 2024年Java面试题:消息中间件RabbitMQ面试题解析 #### 一、消息队列(MQ)的基本概念与...理解其核心概念、优缺点以及与其他消息中间件的对比,不仅有助于面试准备,也能为实际工作中选择合适的技术栈提供参考。
### 消息中间件对比分析 #### Kafka与Activemq、Rabbitmq、ZeroMq、Rocketmq的比较 在现代分布式系统中,消息中间件(Message Queue, MQ)扮演着至关重要的角色,它们用于在分布式组件之间传输消息,帮助解决网络...
为了解决这种问题,可以采用消息中间件产品(例如Windows的MSMQ还有IBM的MQ),但是这种产品比较庞大而且花费不少,对于小规模应用而言没有必要。 SAFMQ(全称为Store and Forward Message Queue)是一个简单的消息...
ATC系统通常包含多个子网,通信环境比较复杂,因此设计消息中间件时要根据数据的属性采用不同的信息传送策略。ATC系统主要包括两个主要组件:CDC(Change Data Capture,变更数据捕获)和MQM(Message Queue Manager...
#### 二、功能对比 **1. 分布式处理** - **CICS**:提供了强大的分布式交易处理功能,通过TransactionRouting、FunctionShipping、DistributedProgramLink等功能实现资源的共享与管理,支持跨地理分布的节点访问...
### MySQL流行中间件比较及实现原理 #### 一、传统数据库架构演变过程 随着互联网技术的发展,业务量急剧增长,传统的数据库架构面临诸多挑战。早期的数据库架构简单,通常采用单体架构,即一个应用程序直接连接到...
本项目正是利用Spring平台来集成开源消息队列中间件ActiveMQ,以实现消息的发送和接收功能,同时也对消息队列的两种主要工作模式——生产者-消费者模式和发布-订阅模式进行了深入探讨。 首先,ActiveMQ是Apache软件...
6. **与其他消息中间件的对比**: RabbitMQ 作为中小型公司的首选,因其管理界面简洁和高并发性能而受到欢迎,但其吞吐量相对较低。RabbitMQ 是基于Erlang开发的,提供良好的并发能力和低延迟,但其MQ功能相对较...
Cetus中间件是一款专为MySQL数据库设计的高性能、高可用的中间层服务,旨在提供数据访问优化、负载均衡以及故障切换等功能,以提高系统的整体性能和稳定性。本演讲主要围绕Cetus中间件的架构设计、技术要点以及性能...
本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。AMQP作为比JMS更加高级的消息协议,支持...