enterprise messaging solutions survey doc 2011... · an enterprise messaging system is a system...

29
INFSO-RI-261611 2010 © Members of EMI collaboration PUBLIC 1 E UROPEAN M IDDLEWARE I NITIATIVE E NTERPRISE M ESSAGING S OLUTIONS S URVEY EMI DOCUMENT Document identifier: EMI-JRA-MESSAGING_SOLUTIONS_SURVEY- v1_0.FINAL.pdf Date: 07/04/2011 Activity: JRA 1.5 Lead Partner: CERN Document status: FINAL Document link: Abstract: This document is a paper survey of the most popular and promising Enterprise Messaging solutions currently available and that could be used to facilitate the integration of EMI components.

Upload: others

Post on 13-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

INFSO-RI-261611 2010 © Members of EMI collaboration PUBLIC 1

EUROPEAN MIDDLEWARE

INITIATIVE

ENTERPRISE MESSAGING SOLUTIONS SURVEY

EMI DOCUMENT

Document identifier: EMI-JRA-MESSAGING_SOLUTIONS_SURVEY-v1_0.FINAL.pdf

Date: 07/04/2011

Activity: JRA 1.5

Lead Partner: CERN

Document status: FINAL

Document link:

Abstract: This document is a paper survey of the most popular and promising Enterprise Messaging solutions currently available and that could be used to facilitate the integration of EMI components.

Page 2: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

TITLE EMI-JRA-MESSAGING_SOLUTIONS_SURVEY-v1_0.FINAL.pdf Date: 07/04/2011

EMI RI-261611 © Members of the EMI collaboration PUBLIC 2

Copyright notice:

Copyright (c) Members of the EMI Collaboration. 2010.

See http://www.eu-emi.eu/about/Partners/ for details on the copyright holders.

EMI (“European Middleware Initiative”) is a project partially funded by the European Commission. For more information on the project, its partners and contributors please see http://www.eu-emi.eu.

This document is released under the Open Access license. You are permitted to copy and distribute verbatim copies of this document containing this copyright notice, but modifying this document is not allowed. You are permitted to copy this document in whole or in part into other documents if you attach the following reference to the copied elements: "Copyright (C) 2010. Members of the EMI Collaboration. http://www.eu-emi.eu ".

The information contained in this document represents the views of EMI as of the date they are published. EMI does not guarantee that any information contained herein is error-free, or up to date.

EMI MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, BY PUBLISHING THIS DOCUMENT.

Page 3: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

Contents

1 Introduction 5

I Features & Protocols 5

2 Features 5

3 Protocols 73.1 STOMP [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.1.1 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.2 Clients and programming languages . . . . . . . . . . . . 7

3.2 AMQP [2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.1 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.2 Clients and programming languages . . . . . . . . . . . . 9

3.3 REST [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.1 Clients and programming language . . . . . . . . . . . . . 10

3.4 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.4.1 MQTT [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.4.2 OpenWire [5] . . . . . . . . . . . . . . . . . . . . . . . . . 103.4.3 XMPP [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

II Messaging Solutions 11

4 Apache ActiveMQ [7] 114.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 Apache ActiveMQ Apollo [8] 125.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 14

6 Fuse Message Broker [9] 146.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2 So, why FuseSource? . . . . . . . . . . . . . . . . . . . . . . . . . 146.3 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.4 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.5 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 15

7 HornetQ [10] 157.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 157.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 16

3

Page 4: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

8 IBM WebSphere Message Broker [11] 168.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 168.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 17

9 MRG-M [12] 179.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 18

10 OpenAMQ [14] 1910.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 1910.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1910.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1910.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 19

11 OpenMQ [15] 1911.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 2011.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2011.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2011.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 20

12 Qpid [13] 2112.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

12.2.1 C++ Implementation Details . . . . . . . . . . . . . . . . 2212.2.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2212.2.3 Supported protocols . . . . . . . . . . . . . . . . . . . . . 22

12.3 Java Implementation Details . . . . . . . . . . . . . . . . . . . . 2212.3.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2212.3.2 Supported protocols . . . . . . . . . . . . . . . . . . . . . 23

13 RabbitMQ [16] 2313.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2413.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 24

14 0MQ [17] 2514.1 What they claim . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514.2 ID Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514.3 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514.4 Supported protocols . . . . . . . . . . . . . . . . . . . . . . . . . 26

A Features Grid 26

B Protocols Grid 28

4

Page 5: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

1 Introduction

An Enterprise Messaging System is a system that enables messaging betweensoftware applications. It allows multiple applications to communicate throughsynchronous or asynchronous messages and enables integration between differentand heterogeneous computer systems.

There are many solutions available with different features and implementa-tions. Some products fit well for specific use cases and some for others. Thistechnology is quite dynamic and in continuous development. Protocols andfunctionalities are evolving and being refined on the users requirements.

This document is meant to be a high-level survey about the most popularand promising messaging solutions available. The first part is dedicated tofeatures and protocols used in Enterprise Messaging. The second part containsthe description of the major available products, the information related to theproducts have been found in the related websites and updated to the releasedate of this document.

The information appearing in this document are updated to March 2011.This is intended to be a snapshot of the solutions currently available. Since thetechnology is very dynamic some of these informations might become incorrectwith time.

Part I

Features & Protocols

2 Features

In this section you can find an explanation of the features that are usuallyimplemented in the most popular messaging solutions. Features will be citedthroughout the whole document, those citations refer to the following meanings.

License: the software license the product is released with;

Programming Language: the main programming language used to imple-ment the product;

Open Source: is the software open source?

Supported Operating Systems: the Operating Systems in which the soft-ware can run;

Security Features

Access Control List: does the broker support authentication and au-thorization?

JAAS Authentication: Java Authentication and Authorization Serviceis a framework for user-centric security;

SASL Authentication: Simple Authentication and Security Layer, amethod for adding authentication to Internet protocols;

SSL: does the software support encryption through SSL technology?

5

Page 6: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

Broker Features

Clustering: used to create group of brokers that run as if it would be asingle broker;

Failover: failover support stands for possibility to set other brokers asfailover if the main one is not available;

Federation: used to provide geographical distribution of brokers. Singlebrokers or clusters can be federated together. Clients look at onefederation as if it is a single broker;

Virtual Hosts: possibility to run multiple virtual brokers on the samemachine and instance;

JMS compliance: compliance with Java Message Service APIs;

Web Sockets: support for new web sockets introduced to allow TCP socketsfrom web browsers;

JMX console: if the broker can be managed and monitored through the JavaJMX Console;

Monitoring: the broker offers a valid way to be monitored;

Queue Browser: specify the possibility to browse the pending messages in aqueue without consuming them;

Consumers Features

Durable Consumers: way of creating a persistence subscription. In thisway the client can connect and disconnect as many times as they needwithout loosing any messages. Messages are kept in the broker andthe subscriber will consume them at the next connection;

Exclusive Consumers: possibility to be the only and exclusive sub-scriber against one destination. It avoids other subscribers to con-sume messages we are interested in;

Last Value Queue: feature that allows to get the last value added to aqueue destination;

Selectors: way of attaching a filter to a subscription;

Wildcards: wild cards can be used to refer to multiple destinations atonce;

Messages Features

Persistence: messages are stored in the broker in a reliable way. If thebroker or the machine crashes, the messages are not lost because theyare safely stored on disk;

Composite Destinations: allows to send messages to multiple destina-tions in one action;

Dead Letter Address: non-deliverable messages or expired messagesare sent to a special destination for collection or secondary actions;

6

Page 7: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

Expiration: it stands for the possibility to specify a time-to-live for eachmessage or per destination;

Message Compression: broker supports compression of the messages;

Transaction: multiple operations (like message sending) can be run asan atomic operation.

3 Protocols

There are many protocols used in Enterprise Messaging Systems, none of themare a confirmed standards. Each messaging solution usually focuses on oneprotocol as a reference point and offers compatibility to others.

The choice of the protocol depends on the use case requirements. Differentprotocols have different semantics, features and programming language imple-mentations. Since messaging is a dynamic technology, it is recommended tochoose an interoperable protocol that would allow to switch between messagingsolutions in a more or less transparent way.

3.1 STOMP [1]

STOMP is the Simple (or Streaming) Text Orientated Messaging Protocol. Itprovides an interoperable wire format so that STOMP clients can communicatewith any STOMP message broker to provide easy and widespread messaginginteroperability among many languages, platforms and brokers.

3.1.1 Versions

• Actual used version: STOMP 1.0;

• Latest version: STOMP 1.1, released in April 2011.

3.1.2 Clients and programming languages

STOMP is a very simple and easy to implement protocol, coming from theHTTP school of design. The server side may be hard to implement well, butit is very easy to write a client to get yourself connected. For example you canuse Telnet to login to any STOMP broker and interact with it!

There is basically a client implementation for each programming language.If you are missing a programming language it is not difficult to write your ownimplementation. This is a non exhaustive list of client implementations availablefor STOMP :

• C/C++/Dynamic C/Objective C

– Apache CMS is a JMS-like API for C++

– dstomp is a STOMP client library written in Dynamic C for Rabbit

– libstomp is an APR based C library

– objc-stomp is a simple STOMP client based on AsynSocket

• Delphi and FreePascal

7

Page 8: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

– delphistompclient is a STOMP client for Embarcadero Delphi andFreePascal

• Erlang

– stomp.erl is a STOMP client for Erlang

• Java

– Gozirra

• .NET/C#

– Apache NMS is a JMS-like API for .NET

• PHP

– stomp official php extension available at pecl

– stomp-php is the FuseSource PHP client implementation

– Zend Queue Stomp for Zend PHP clients

– simplisticstompclient is a simpler STOMP client for PHP

• Perl:

– Net-STOMP-Client Perl module available in CPAN

– Net-Stomp Perl module available in CPAN

• Python:

– stompy

– stomp.py

– pyactivemq

– stomper

• Ruby:

– stomp gem

– activemessaging

3.2 AMQP [2]

Advanced Message Queuing Protocol (AMQP) is an open standard for Mes-saging Middleware. Its aim is to define a standard protocol for messaging andmakes the AMQP compliant systems interoperable and platform independent.

Many companies took part in its definition since 2006.

8

Page 9: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

3.2.1 Versions

There have been many versions with radical changes, the most important are 0-8, 0-9, 0-10, 0-9-1 and 1-0 (not finalized). Not all the versions are interoperable,different brokers implementations for the same protocol version might differ andclients might not be compatible.

The protocol has been standardized but it is still not mature. For exampleversion 0-9-1 is a merge and simplification of 0-8 and 0-9 but it has been re-leased after 0-10. Version 0-10 is incompatible with the other 0-* versions andconsidered by some as a bad protocol. As second example, the latest versionthat is in validation, 1-0, is really different and not compatible with the previousones.

The lack of maturity of this protocol is also shown from the fact that differentversions of the protocol do not communicate with each other.

3.2.2 Clients and programming languages

This is a non exhaustive list of client implementations available for AMQP :

• C/C++

– RabbitMQ C client (experimental)

– Qpid C++ Messaging Client

• Java

– RabbitMQ Java client

– Qpid AMQP Java JMS Messaging Client

• .NET/C#

– RabbitMQ .NET client

– Qpid .NET Messaging Client

• Perl:

– Net-AMQP available in CPAN

• Python:

– carrot - AMQP Messaging Framework

– py-amqplib

– txAMQP - Twisted AMQP

– Qpid Python Messaging Client

• Ruby:

– AMQP gem (This library was tested primarily with RabbitMQ, al-though it should be compatible with any server implementing theAMQP 0-8 spec)

– StormMQ client

– Qpid AMQP Ruby Messaging Client

– AMQP driver for Ruby/EventMachine

9

Page 10: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

3.3 REST [3]

Representational State Transfer (REST ) is an architectural style for commu-nication. It imposes some constraints like that the communication has to bebetween a client and a server. The communication has to be stateless andresources access should be unified.

The most used implementation of REST is the HTTP protocol. Messagingsolutions often implement REST architectural style protocols, they are usuallyimplemented in a HTTP compatible way.

REST implementations are useful in specific use cases in messaging. In thecase of lightweight publishing it becomes really useful because it gets rid of thebig overhead of the other protocols. With REST all the protocols features likereceipts, transactions and others are lost; but in a use case where a client justwants to drop a message, this is a good option.

3.3.1 Clients and programming language

REST APIs are usually implemented in a way that they are compatible withHTTP protocol and servers. It is very useful because it enables HTTP librariesand browsers to communicate with REST APIs in a broker.

3.4 Other

In this section other protocols are listed, these are less important protocols.These protocols will not be detailed because they are too broker-specific or theydon’t offer a wide cross-broker compatibility.

3.4.1 MQTT [4]

MQTelemetry Transport (MQTT ) is a protocol which enables a publish/subscribemessaging model in an extremely lightweight way. It is useful in the case wherethe network is expensive or unreliable or it has to be integrated in embeddeddevices.

Clients and programming languages: C/C++, Delphi, Erlang, Java, .NET,Perl, PHP, Python, Ruby.

3.4.2 OpenWire [5]

The OpenWire protocol is a JMS compliant wire protocol (defining messagetypes and message encodings) that is native to the Apache ActiveMQ and FUSEMessage Broker. The protocol is designed to be fully-featured, JMS-compliant,and highly performant. It is the default protocol of the Apache ActiveMQ andFUSE Message Broker.

Clients and programming languages: Java, C, C++, C#.

3.4.3 XMPP [6]

XMPP is the Extensible Messaging and Presence Protocol, a set of open tech-nologies for instant messaging, presence, multi-party chat, voice and videocalls, collaboration, lightweight middleware, content syndication, and gener-alized routing of XML data.

10

Page 11: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

XMPP was originally developed in the Jabber open-source community toprovide an open, secure, spam-free, decentralized alternative to the closed in-stant messaging services at that time.

It is a very generic protocol, it has extensions for message queue and publishsubscribe pattern.

Clients and programming languages: most of the popular.

Part II

Messaging Solutions

4 Apache ActiveMQ [7]

Apache ActiveMQ has been adopted within the EGEE infrastructure as an inte-gration framework for service monitoring and other operational tools includingaccounting, ticketing and operational dashboards. It also has been used forpublishing event logs from gLite middleware components.

Apache ActiveMQ is a widely used messaging broker, it is used in manychallenging environments. It has a wide and active community that helps onthe product development. It has many interesting features that distinguish itfrom some other products.

However this product is going to be replaced soon (may be as soon as halfyear) with a new technology broker (section 5). This means that at some pointthis product will not be supported anymore.

4.1 What they claim

Apache ActiveMQ is the most popular and powerful open source mes-saging and Integration Patterns provider.

ActiveMQ is an open source, Java Message Service (JMS) 1.1 com-pliant, message oriented middleware (MOM) from the Apache Soft-ware Foundation that provides high availability, performance, scal-ability, reliability and security for enterprise messaging. ActiveMQis licensed using the Apache License, one of the most liberal andbusiness-friendly Open Source Initiative (OSI) approved licenses avail-able.

4.2 ID Card

• Website: http://activemq.apache.org/

• Written in: Java

• Lines of code: ∼230K

• Open Source: yes

• Supporter: FuseSource, a Progress Software company

• License: Apache 2.0

11

Page 12: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

4.3 Features

This is a non-exhaustive list of the major features supported in Apache Ac-tiveMQ:

• Supported Operating Systems: Operating Systems that support Java

• Broker Features: Clustering, Failover, Federation, Virtual Hosts

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue, Selectors, Wildcards

• Messages Features: Composite Destinations, Dead Letter Address, Expi-ration, Persistence, Transaction

• Security Features: Access Control List, JAAS Authentication, SASL Au-thentication, SSL

• JMS compliance

• JMX console

• Monitoring

• Queue Browser

• Web Sockets

4.4 Supported protocols

• OpenWire

• REST

• STOMP 1.0

• XMPP

5 Apache ActiveMQ Apollo [8]

Apache ActiveMQ Apollo is the next generation ActiveMQ broker, it is cur-rently under active development. This product name will officially be ApacheActiveMQ 6 but its codename is Apollo. The first production release is probablygoing to be released in the end of 2011.

This new generation product looks promising, it is pushed by FUSE andhas a quite big community with a good activity. ActiveMQ Apollo has very lownumber of lines of code, it is a really good characteristic for a software becauseit reduces the statistical number of software bugs.

The information reported for this product will probably be outdated in ashort time since it is under intensive development.

12

Page 13: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

5.1 What they claim

ActiveMQ Apollo is a faster, more reliable, easier to maintain mes-saging broker built from the foundations of the original ActiveMQ. Itaccomplishes this using a radically different threading and messagedispatching architecture.

In its current incarnation, Apollo only supports the STOMP protocolbut just like the original ActiveMQ, its been designed to be a multiprotocol broker. In future versions it should get OpenWire supportso it can be compatible with ActiveMQ 5.x JMS clients.

5.2 ID Card

• Website: http://activemq.apache.org/apollo

• Written in: Scala + Java

• Lines of code: ∼26K

• Open Source: yes

• Supporter: FuseSource, a Progress Software company

• License: Apache 2.0

5.3 Features

This is a non-exhaustive list of the major features supported in Apache Ac-tiveMQ Apollo:

• Supported Operating Systems: Operating Systems that support Java

• Broker Features: Clustering in the future, Failover in the future, Federa-tion in the future, Virtual Hosts

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue in the future, Selectors, Wildcards

• Messages Features: Composite Destinations, Dead Letter Address in thefuture, Expiration in the future, Message Compression in the future, Per-sistence, Transaction

• Security Features: Access Control List, JAAS Authentication, SASL Au-thentication, SSL

• JMS compliance in the future

• JMX Console in the future

• Monitoring

• Queue Browser

• Web Sockets in the future

13

Page 14: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

5.4 Supported protocols

• STOMP 1.0

• STOMP 1.1

• OpenWire (next future)

• AMQP (next future)

• MQTT (next future)

6 Fuse Message Broker [9]

Fuse Message Broker is the same product as Apache ActiveMQ but packagedfrom FuseSource, a Progress Software company.

FuseSource is actively developing on Apache ActiveMQ, they also offer cus-tomer support through subscription for interested companies.

6.1 What they claim

Fuse Message Broker is an open source JMS message broker basedon Apache ActiveMQ that is productized and supported by the peoplewho wrote the code. Fuse Message Broker is the JMS platform ofchoice for scalable, high-performance SOA infrastructure to connectprocesses across heterogeneous systems.

Fuse Message Broker delivers large amounts of data efficiently andreliably. Performance testing has shown that Fuse Message Brokerexhibits the highest performance of any open source messaging plat-form, and has clustering and failover to ensure high availability.

6.2 So, why FuseSource?

So, why someone should choose Fuse Message Broker instead of Apache Ac-tiveMQ? We could identify three main reasons:

• FuseSource offers customer support through contract purchase

• FuseSource is more careful on broker updates. Apache ActiveMQ releasesare grouped in less Fuse Message Broker releases, this allows more testingand changes consolidation

• FuseSource can implement features on request of the customer

6.3 ID Card

• Website: http://fusesource.com/products/enterprise-activemq/

• Written in: Java

• Lines of code: ∼230K

• Open Source: yes

14

Page 15: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

• Provider: FuseSource, a Progress Software company

• License: FUSE Message Broker License Agreement (based on the ApacheLicense 2.0)

6.4 Features

Same as Apache ActiveMQ (section 4.3).

6.5 Supported protocols

Same as Apache ActiveMQ (section 4.4).

7 HornetQ [10]

HornetQ is one of the best looking products, it is supported by JBoss, a RedHatcompany.

It claims to have very good performance, a wide set of features and itscommunity seems to be quite big and active. It is a quite recent product witha consistent roadmap. Its brain, Tim Fox, recently resigned from the project,so the direction of the product might change. More interesting to know thatTim Fox has been hired not long ago by SpringSource to work on RabbitMQ(section 13).

7.1 What they claim

HornetQ is an open source asynchronous messaging project fromJBoss. It is an example of Message Oriented Middleware HornetQis an open source project to build a multi-protocol, embeddable, veryhigh performance, clustered, asynchronous messaging system.

The HornetQ project was the brain-child of Tim Fox, and was launchedon 24 August 2009, during much of its development the HornetQcode-base was developed under the name JBoss Messaging 2.0.

The HornetQ project is licensed using the Apache Software Licensev 2.0.

7.2 ID Card

• Website: http://www.jboss.org/hornetq

• Written in: Java

• Lines of code: ∼249K

• Open Source: yes

• Supporter: JBoss by Red Hat

• License: Apache 2.0

15

Page 16: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

7.3 Features

This is a non-exhaustive list of the major features supported in HornetQ:

• Supported Operating Systems: Operating Systems that support Java

• Broker Features: Clustering, Failover, Federation

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue, Selectors, Wildcards

• Messages Features: Dead Letter Address, Expiration, Persistence, Trans-action

• Security Features: Access Control List, JAAS Authentication, SSL

• JMS compliance

• JMX console

• Queue Browser

• Monitoring

• Web Sockets

7.4 Supported protocols

• STOMP 1.0

• STOMP 1.1

• REST

• AMQP (in the next version)

8 IBM WebSphere Message Broker [11]

IBM WebSphere Message Broker is an IBM product, it is probably used forother application integration. Its website does not contain many detailed infor-mation about the product.

An email was been sent to ask for more information but a reply was neverreceived. A trial of the software is available for download, the tarball is 500mb,looks like the product is quite big compared to the other products.

8.1 What they claim

IBM WebSphere Message Broker provides an Enterprise Service Bus(ESB) that has been designed for universal connectivity and trans-formation in heterogeneous IT environments.

Simplify your application integration and make business data avail-able where you need it, when you need it, and in the format you needit in.

16

Page 17: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

8.2 ID Card

• Website: http://www-01.ibm.com/software/integration/wbimessagebroker/

• Written in: Java

• Lines of code: NA

• Open Source: no

• Provider: IBM

• License: Server License on purchase

8.3 Features

Here below a non-exhaustive list of the features supported in IBM WebSphereMessage Broker. Since no many informations were available about this brokerwe report features cited in the website.

• Cost-effective and easy-to-use method of integrating a cross-vendor, best-of-breed application infrastructure

• Enriches business information flows by securely and seamlessly includingdata held in packaged applications, databases and files

• Supports a broad range of transports, protocols, and data formats allowingvirtually any business systems to freely communicate with each other

• Exploits the power and reliability of WebSphere MQ - provides a simpleprogression from point-to-point messaging to full ESB capability

• Monitor data flows in a non-intrusive manner and capture significant in-formation for analysis and action

• Easily develop and reuse connectivity solutions using IBM pre-suppliedpatterns, or create custom user-defined patterns of common use cases

8.4 Supported protocols

Proprietary protocol.

9 MRG-M [12]

MRG-M is a RedHat product, the source code is not available, the website doesnot contain many information about features and details. An email was beensent to customer support asking for more information but they replied just witha pdf containing some slides.

It does not have a users community like the other open source community.In theory the product started its development from Qpid (section 12) projectso we can imagine that the features might be similar.

17

Page 18: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

9.1 What they claim

Red Hat Enterprise MRG integrates messaging, realtime, and gridtechnologies into a next-generation IT infrastructure that is 100-fold faster than alternatives and offers increased interoperability. Itgives customers a competitive advantage by running applications andtransactions with greater performance and reliability.

By integrating messaging, realtime, and grid functionality, Red HatEnterprise MRG provides enterprises with a revolutionary founda-tion for high-performance distributed computing for everything fromSOA to virtualization to cloud computing to bare-metal, mission-critical applications

9.2 ID Card

• Website: http://www.redhat.com/mrg/

• Written in: based on Qpid, C++ or Java

• Lines of code: NA

• Open Source: no

• Provider: Red Hat

• License: Server License on purchase

9.3 Features

This is a non-exhaustive list of the major features supported in MRG-M:

• Supported Operating System: RedHat Linux

• Broker Features: Clustering, Failover, Federation

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue, Wildcards

• Messages Features: Composite Destinations, Dead Letter Address, Expi-ration, Persistence, Transaction

• Security Features: Access Control List, SASL Authentication, SSL

• JMS compliance

• JMX console

• Monitoring

• Queue Browser

9.4 Supported protocols

Similar to Qpid probably.

18

Page 19: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

10 OpenAMQ [14]

OpenAMQ is a product that was supported by iMatix. Unfortunately iMatixis currently stopping support on this product and the product seems like it hasbeen left to die, the website is not really updated and the changeset seems dead.iMatix dropped this product in favor of 0MQ (section 14), they are promotingthis new concept messaging solution.

However, some information has been collected but this project is not recom-mended for future usage.

10.1 What they claim

OpenAMQ is a business messaging product. That is, it provides youwith a framework on which to build distributed business applicationswhich communicate using messages. Such distributed applicationsare sometimes called ”loosely connected”. Typically the flow of mes-sages is asynchronous. That means that messages flow between partsof the overall application without an overall synchronizing or control-ling logic.

Asynchronous, loosely-coupled messaging is, as far as we know, thebest way to build very large, very scalable applications.

10.2 ID Card

• Website: http://www.openamq.org/

• Written in: C

• Lines of code: ∼600K

• Open Source: yes

• Supporter: iMatix

• License: GNU General Public License >= 2

10.3 Features

The features have not been reported since the project seems frozen.

10.4 Supported protocols

The supported protocols have not been reported since the project seems frozen.

11 OpenMQ [15]

OpenMQ is a very specific Java solution, and it is probably used for differentproduct integration. It does not look good for product interoperability. Thewebsite looks updated but it does not contain many information like otherproducts. The community does not look very big and also the activity is quitelow.

19

Page 20: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

11.1 What they claim

Open message queue is an enterprise quality, production ready, scal-able messaging server. It provides a complete Java Message Service(JMS) implementation for message oriented system integration.

In addition, Open MQ provides the additional enterprise featuresthat are necessary for enterprise deployments, large and small. Itgets its roots from Java Message Queue and provides all the features,functions and capabilities of the currently available licensed product:Java System Message Queue.

11.2 ID Card

• Website: http://mq.java.net/

• Written in: Java

• Lines of code: ∼261K

• Open Source: yes

• Supporter: Oracle

• Licence: Common Development and Distribution License (CDDL) Version1.1

11.3 Features

This is a non-exhaustive list of the major features supported in OpenMQ:

• Supported Operating Systems: Operating Systems that support Java

• Broker Features: Clustering, Failover

• Consumers Features: Durable Consumers, Exclusive Consumers, Selec-tors, Wildcards

• Messages Features: Dead Letter Address, Expiration, Message Compres-sion, Persistence, Transaction

• Security Features: Access Control List, JAAS Authentication, SSL

• JMS compliance

• JMX console

• Monitoring

• Queue Browser

11.4 Supported protocols

• Proprietary protocol

• STOMP

20

Page 21: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

12 Qpid [13]

Qpid is an Apache project that is supported by RedHat, the project seems alittle confused. It has two implementations, one in Java and one in C++, itis difficult to see why there is this duplication with a project that has a singleaim. It means double developers, double lines of code, double support, etc...

The website is also a little bit confused, it mixes information for the two im-plementations and it is not very clear which implementation one should choose.The users community around this project does not seems to be really big butthe developer community seem active.

12.1 What they claim

Apache Qpid is a cross-platform Enterprise Messaging system whichimplements the Advanced Message Queuing Protocol (AMQP), pro-viding message brokers written in C++ and Java, along with clientsfor C++, Java JMS, .Net, Python, and Ruby.

Apache Qpid implements the latest AMQP specification, providingtransaction management, queuing, distribution, security, manage-ment, clustering, federation and heterogeneous multi-platform sup-port and a lot more. And Apache Qpid is extremely fast. ApacheQpid aims to be 100% AMQP Compliant.

Qpid provides two AMQP messaging brokers:

• Implemented in C++ - high performance, low latency, andRDMA support

• Implemented in Java - Fully JMS compliant, runs on any Javaplatform

Both AMQP messaging brokers support clients in multiple languages,as long as the messaging client and the messaging broker use thesame version of AMQP. See Download to see which messaging clientswork with each broker.

12.2 ID Card

• Website: http://qpid.apache.org/

• Written in: 2 implementations, 1 in C++, the other in Java

• Lines of code: ∼115K for C++ and ∼209K for Java

• Open source: yes

• Supporter: Red Hat

• License: Apache 2.0

21

Page 22: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

12.2.1 C++ Implementation Details

12.2.2 Features

This is a non-exhaustive list of the major features supported in Qpid C++:

• Supported Operating Systems: Linux, Windows, Solaris

• Broker Features: Clustering, Failover, Federation

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue, Wildcards

• Messages Features: Composite Destinations, Dead Letter Address, Expi-ration, Persistence, Transaction

• Security Features: Access Control List, SASL Authentication, SSL

• JMS compliance

• JMX console

• Monitoring

• Queue Browser

12.2.3 Supported protocols

• AMQP 0-10

• AMQP 1-0 (planned)

12.3 Java Implementation Details

12.3.1 Features

This is a non-exhaustive list of the major features supported in Qpid Java:

• Supported Operating System: Operating Systems that support Java

• Broker Features: Federation in the future, Virtual Hosts

• Consumers Features: Durable Consumers, Exclusive Consumers, LastValue Queue in the future, Selectors, Wildcards

• Messages Features: Expiration, Persistence, Transaction

• Security Features: Access Control List, SASL Authentication, SSL

• JMS compliance

• JMX console

• Monitoring

22

Page 23: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

12.3.2 Supported protocols

• AMQP 0-10

• AMQP 0-9

• AMQP 0-8

• AMQP 1-0 (planned)

13 RabbitMQ [16]

RabbitMQ is a widely used messaging solution. Its website is constantly updatedand contains much information and many examples. It has a really active andwide community that helps to evolve the product.

What is really appealing with this product is its concept. It is written inErlang/OTP, a programming language incorporating a framework for messagepassing and concurrent software architectures. This platform was born to handlehigh concurrent and parallel applications for communications.

RabbitMQ has very low number of lines of code, it is a really good char-acteristic for a software because it reduces the statistical number of softwarebugs.

13.1 What they claim

RabbitMQ provides robust messaging for applications. It is easy touse, fit for purpose at cloud scale and supported on all major oper-ating systems and developer platforms. RabbitMQ is open sourcedunder the Mozilla Public License.

RabbitMQ is based on a proven platform and offers a reliable, highlyavailable, scalable and portable messaging system with predictableand consistent throughput and latency.

RabbitMQ is 100% open source and 100% based on open standardprotocols freeing users from dependency on proprietary vendor-suppliedlibraries.

RabbitMQ is designed from the ground up to interoperate with othermessaging systems: it is the leading implementation of AMQP, theopen standard for business messaging, and, through adapters, sup-ports XMPP, SMTP, STOMP and HTTP for lightweight web mes-saging.

RabbitMQ is supported by a thriving community of active contrib-utors. A full range of commercial support services are availablethrough the SpringSource division of VMware.

13.2 ID Card

• Website: http://www.rabbitmq.com/

• Written in: Erlang

23

Page 24: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

• Lines of code: ∼19K

• Open Source: yes

• Supporter: SpringSource, a division of VMware

• License: Mozilla Public License

13.3 Features

This is a non-exhaustive list of the major features supported in RabbitMQ:

• Supported Operating Systems: Operating Systems that support Erlang

• Security Features: Access Control List, JAAS Authentication in the fu-ture, SASL Authentication, SSL

• Broker Features: Clustering, Failover, Federation in the future, VirtualHosts

• Messages Features: Composite Destinations, Dead Letter Address, Expi-ration, Persistence, Transaction

• JMS compliance in the future

• JMX Console in the future

• Monitoring

• Web Sockets

• Consumers Features: Durable Consumers, Exclusive Consumers, Selectorsin the future, Wildcards

13.4 Supported protocols

• AMQP 0-8

• AMQP 0-9

• AMQP 0-9-1

• AMQP 1-0 (in the future, when it will be finalized)

• REST

• STOMP 1.0

• STOMP 1.1

• XMPP

24

Page 25: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

14 0MQ [17]

0MQ is completely different project, unlike the previous product it is a broker-less product. It has valid points on its theory, it solves some of the most commonuse cases on enterprise messaging but seems like it aims to solve some otherproblems.

It seems to be a valid solution for message passing in multi-threading softwarearchitectures.

This product is supported and actively developed by iMatix, the companythat was supporting OpenAMQ, they left its development and AMQP definitionfor this new shiny solution.

An interesting application of RabbitMQ and 0MQ has been shown in [18]. Abridge that allows 0MQ to communicate with a RabbitMQ broker has been im-plemented. This bridge open the doors to new approaches. A single broker-less0MQ could be used whenever a broker infrastructure is not needed avoiding thebroker requirement and delay. Whenever a broker infrastructure and featureswould be needed 0MQ could be enabled to communicate to a RabbitMQ broker.

In this way an application could benefit from both broker-less and brokerinfrastructures through the same client depending on the use case.

14.1 What they claim

0MQ (also spelled ZeroMQ, 0MQ or ZMQ) is a high-performanceasynchronous messaging library aimed to use in scalable distributedor concurrent applications. It provides a message queue, but unlikemessage-oriented middleware, a 0MQ system can run without a ded-icated message broker. The library is designed to have a familiarsocket-style API.

0MQ is developed by iMatix Corporation together with a large com-munity of contributors.

14.2 ID Card

• Website: http://www.zeromq.org

• Written in: C/C++

• Lines of code: ∼15K

• Open Source: yes

• Supporter: iMatix

• License: GNU Lesser General Public License

14.3 Features

Below there is a non-exhaustive list of features supported by 0MQ. Since theproduct is completely different from the others, features are listed in a differentformat.

• The socket library that acts as a concurrency framework

25

Page 26: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

• Carries messages across inproc, IPC, TCP, and multicast

• Connect N-to-N via fanout, pubsub, pipeline, request-reply

• Fast enough for clustered products and supercomputing

• Async I/O for scalable multicore message-passing apps

• Large and active open source community

• 20+ languages including C, C++, Java, .NET, Python

• Most OSes including Linux, Windows, OS X

14.4 Supported protocols

Proprietary protcol.

A Features Grid

In the next figure the features of the different product are mapped in a table.Some of the products have not been included in the table:

• FUSE Message Broker is not on the table because it has the same set offeatures of Apache ActiveMQ which appears in the table;

• IBM WebSphere has not been included because the list of features wasnot available;

• OpenAMQ has not been included because it is not supported anymore.

26

Page 27: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

27

Page 28: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

B Protocols Grid

In the figure below the supported protocols from the different products havebeen mapped in a table.

Some of the messaging products does not appear in the table:

• FUSE Message Broker does not appear in the table because it supportsthe same protocols as Apache ActiveMQ which is in the table;

• IBM WebSphere does not appear in the table because the list of supportedprotocols was not available;

• MRG-M is not on the table because no specific version were available sincethe binary is not available;

• OpenAMQ does not appear in the table because it is not supported any-more;

• ZeroMQ does not appear in the table because it can not be comparedsince it only supports a proprietary protocol.

28

Page 29: ENTERPRISE MESSAGING SOLUTIONS SURVEY DOC 2011... · An Enterprise Messaging System is a system that enables messaging between software applications. It allows multiple applications

References

[1] STOMP - http://stomp.github.com/.

[2] AMQP - http://www.amqp.org/.

[3] REST - http://en.wikipedia.org/wiki/Representational State Transfer.

[4] MQTT - http://mqtt.org.

[5] OpenWire - http://activemq.apache.org/openwire.html.

[6] XMPP - http://www.xmpp.org/.

[7] Apache ActiveMQ 5.x - http://activemq.apache.org.

[8] Apache ActiveMQ Apollo - http://activemq.apache.org/apollo.

[9] Fuse Message Broker - http://fusesource.com/products/enterprise-activemq.

[10] HornetQ - http://www.jboss.org/hornetq.

[11] IBMWebsphere Message Broker - http://www.ibm.com/software/integration/wbimessagebroker/.

[12] MRG-M - http://www.redhat.com/mrg/.

[13] Qpid - http://qpid.apache.org/.

[14] OpenAMQ - http://www.openamq.org/.

[15] OpenMQ - http://mq.java.net/.

[16] RabbitMQ - http://www.rabbitmq.com/.

[17] 0MQ - http://www.zeromq.org/.

[18] RabbitMQ/ZeroMQ bridge - http://www.rabbitmq.com/blog/2010/10/18/rabbitmq0mq-bridge/.

29