Open Source JMS (Java Message Service) Implementations

Share the article!

This is nothing extraordinary, its just for my own reference. It’s a review of Java Message Service (i.e. JMS) implementations that are open source.

  1. JMS4Spread – JMS4Spread is a messaging system that partially implements the Java Messaging Service (JMS) API. JMS4Spread utilizes the Spread toolkit, a high performance group communication and message bus system that is resilient to faults across external or internal networks. JMS4Spread implements messaging in a completely distributed fashion so that there is no central server that represents a single point of failure. Each Spread daemon maintains a replicated state of the currently active topics via Spread groups.
  2. mom4J – mom4j is fully JMS 1.1 compliant and designed to have a small memory footprint, easily embeddable, its own transactional message store to make it independant from a relational database and a language indepent wire protocol, so that clients can be written in any programming language.
  3. UberMQ – UberMQ is a clean room implementation of the Java Message Service specification. JMS is a part of the Java 2 Enterprise Edition. UberMQ states that it was written because many of the established JMS vendors have turned their back on the core tenets of distributed computing: fast and simple.
  4. MantaRay – tMantaRay is a message queue transport layer (JMS provider) designed specifically for heterogeneous, distributed and high-traffic environments. Unlike traditional messaging systems, like busses or brokers, MantaRay provides a much higher level of robustness and faster performance, as well as rapid implementation time comparatively by eliminating the need of a broker and bringing all functionality to the edges. MantaRay eliminates the single point of congestion and single point of failure by using a peer-to-peer serverless architecture.
  5. Naradabrokering – The NaradaBrokering project at the Community Grids Lab is an open source project that researches fundamental issues pertaining to distributed middleware systems. These include, among others, issues of efficient routing, support for complex interactions, robustness, resilience, ordering, security and trust. NaradaBrokering aims to provide a unified messaging environment that integrates grid services, web services, peer-to-peer interactions and traditional middleware operations.
  6. OpenJMS – Supports both Point-to-Point and publish-subscribe messaging models, Guaranteed delivery of messages, synchronous and asynchronous message delivery, persistence using JDBC, Local transactions, message filtering using SQL92-like selectors, Applet support, integrates with Servlet containers, and support for RMI, TCP, HTTP and SSL protocol stacks.
  7. JORAM – New functionnalities include communication through a “local” optimised connection, no dependence on a single central JNDI server and a universal JMS bridge. Supports both Point-to-Point and Publish/Subscribe messaging models, backward compatibility with JMS 1.0.2b compliant applications, Local, TCP and SOAP (HTTP/XML) client-server communication protocols, message prioritization, a configurable dead message queue, load balancing through clustered topics, monitoring methods and a graphical administration and monitoring tool.
  8. JBossMQ – JBossMQ, which evolved from SpyderMQ, is the current production-ready JBoss JMS provider and it entered maintenance mode since the JBoss version 3.2.6. JTA XA integration used by JBoss’s JMS Resource Adapter, pluggable Invocation Layers to support different transport mechanisms, including http, rmi, tcp/ip and in memory invocations, pluggable Security to support different security mechanisms, pluggable Persistence to support different persistence mechanisms and high Availability in a clustered environment. JBoss-4.x supports the JMS1.1 and JBoss-3.2.x supports the JMS1.0.2b.
  9. Somnifugi – Somnifugi is an implementation of JMS that works inside a single JVM to send JMS Messages between Threads. Somnifugi is particularly useful for isolating the awt Thread so that the user interface will stay lively, for decoupling calls to slower external resources such as database connections, and for speeding up implementations of generic JMS clients by placing decoupled JMS clients in the same JVM. Somnifugi is built on top of Doug Lea’s concurrent utilities, especially Channels and LinkedQueues.
  10. ActiveMQ – ActiveMQ is an open source, Apache 2.0 licensed Message Broker and JMS 1.1 implementation which integrates seamlessly into Geronimo, light weight containers and any Java application. JMS 1.1 / J2EE 1.4 compliant, full support for JCA resource adaptors, upport for transient, persistent, transactional and XA messaging, supports in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports, REST API, Streamlets to support web streaming support, in memory JMS provider, ideal for unit testing, JSR 77 / 88 support for easy deployment & management & hot deployment, rules based message routing via Drools
  11. Active JMS – The Active JMS open source project was offers a freely available, non-proprietary, open source ActiveX JMS client API. With it, you can access a large majority of the JMS functionality using Microsoft technologies.
  12. JFoxMQ – Supports a large number of connections with high-speed message throughput, providing an extremely high performance and scalable enterprise messaging solution. Guaranteed, once and only once, secure, reliable messaging. JMS 1.0.2 compliant with the Publish/Subscribe non-persistent model. (JMX)-based infrastructure, full XML support and JavaSpace based clustering.
  13. Open3 – Open3 EMS 2.1 natively supports XML, facilitating the enterprise in constructing a robust Web services architecture. Supports clustering for load balancing, permitting the messaging system to seamlessly scale to increased traffic. Multiple server support to effortlessly handle fail over, also provides an advanced security system through authentication, authorization, and encryption. Approprate for number 13, project is now defunct (let me know if you have the original sources).
  14. RM4GS – (Reliable Messaging for Grid Services) is an “open source” middleware which provides reliable messaging facilities for Web Services. RM4GS is implemented as a resource adapter defined in JCA (J2EE Connector Architecture) specification. It can work with EJB. Received messages can be handled by MDB (Message Driven Bean). Not JMS compliant.
  15. JBossMessaging – JBoss/Messaging is a re-implementation of JBossMQ. Fully compatible JMS1.1 implementation. Performance characteristics to exceed JBossMQ’s. One of the project tasks is to build a benchmarking infrastructure that will allow tracking of the performance metrics evolution in time, between versions, as well as comparison with equivalent metrics of similar products. High availability features, such as distributed destinations, in-memory replication of the messages and transparent client fail over. Standard JMS API to JGroups. Serverless JMS design.

Let me know what I’ve overlooked. Also, please vote for your favorite JMS implementation.


Share the article!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>