Chapter 2. Introduction

JBoss Messaging provides an open source and standards-based messaging platform that brings enterprise-class messaging to the mass market.

JBoss Messaging implements a high performance, robust messaging core that is designed to support the largest and most heavily utilized SOAs, enterprise service buses (ESBs) and other integration needs ranging from the simplest to the highest demand networks.

It will allow you to smoothly distribute your application load across your cluster, intelligently balancing and utilizing each nodes CPU cycles, with no single point of failure, providing a highly scalable and performant clustering implementation.

JBoss Messaging includes a JMS front-end to deliver messaging in a standards-based format as well as being designed to be able to support other messaging protocols in the future.

JBoss Messaging is destined to become an integral part of the JBoss Enterprise Application Platform, and the new Service Integration Platform.

Currently it is available for embedded use within the JBoss Application Server 4.2.0.GA or later (JBossAS). Work to integrate JBoss Messaging with the new JBoss Microcontainer is under way.

JBoss Messaging is also an integral part of Red Hat's strategy for messaging. JBoss Messaging is committed to AMQP ( AMQP)- the new messaging standard from Red Hat and others. Later versions of JBoss Messaging will support AMQP, and JBoss Messaging will be focussed on becoming the premier AMQP Java broker.

2.1. JBoss Messaging support cover from Red Hat

JBoss Messaging is destined to become part of both Application Server Platform and Service Integration Platform as default JMS provider.Production support will then be fully available for these plaforms and it will cover JBoss Messaging.

There is a currently an early adopters program where production support is given for JBoss Messaging. Applications are considered on a case-by-case basis.

Currently developer support is generally available for JBoss Messaging when installed in JBoss 4.2.x

2.2. JBoss Messaging Features

JBoss Messaging provides:

  • A fully compatible and Sun certified JMS 1.1 implementation, that currently works with a standard 4.2 or later JBoss Application Server installation.

  • A strong focus on performance, reliability and scalability with high throughput and low latency.

  • A foundation for JBoss ESB for SOA initiatives; JBoss ESB uses JBoss Messaging as its default JMS provider.

Other JBoss Messaging features include:

  • Publish-subscribe and point-to-point messaging models

  • Persistent and non-persistent messages

  • Guaranteed message delivery that ensures that messages arrive once and only once where required

  • Transactional and reliable - supporting ACID semantics

  • Customizable security framework based on JAAS

  • Fully integrated with JBoss Transactions (formerly known as Arjuna JTA) for full transaction recoverability.

  • Extensive JMX management interface

  • Support for most major databases including Oracle, Sybase, MS SQL Server, PostgreSQL and MySQL

  • HTTP transport to allow use through firewalls that only allow HTTP traffic

  • SSL transport

  • Configurable DLQs (Dead Letter Queues) and Expiry Queues

  • Message statistics. Gives you a rolling historical view of what messages were delivered to what queues and subscriptions

  • Automatic paging of messages to storage. Allows the use of very large queues - too large to fit in memory at once

Clustering features:

  • Fully clustered queues and topics. "Logical" queues and topics are distributed across the cluster. You can send to a queue or a topic from any node, and receive from any other.

  • Fully clustered durable subscriptions. A particular durable subscription can be accessed from any node of the cluster - allowing you to spread processing load from that subscription across the cluster.

  • Fully clustered temporary queues. Send a message with a replyTo of a temp queue and it can be sent back on any node of the cluster.

  • Intelligent message redistribution. Messages are automatically moved between different nodes of the cluster if consumers are faster on one node than another. This can help prevent starvation or build up of messages on particular nodes.

  • Message order protection. If you want to ensure that the order of messages produced by a producer is the same as is consumed by a consumer then you can set this to true. This works even in the presence of message redistribution.

  • Fully transparent failover. When a server fails, your sessions continue without exceptions on a new node as if nothing happened. (Fully configurable - If you don't want this you can fall back to exceptions being thrown and manually recreation of connections on another node)

  • High availability and seamless fail-over. If the node you are connected to fails, you will automatically fail over to another node and will not lose any persistent messages. You can carry on with your session seamlessly where you left off. Once and only once delivery of persistent messages is respected at all times.

  • Message bridge. JBoss Messaging contains a message bridge component which enables you to bridge messages between any two JMS1.1 destinations on the same or physical separate locations. (E.g. separated by a WAN). This allows you to connect geographically separate clusters, forming huge globally distributed logical queues and topics.

2.3. Compatibility with JBossMQ

JBoss MQ is the JMS implementation currently shipped within JBoss AS. Since JBoss Messaging is JMS 1.1 and JMS 1.0.2b compatible, the JMS code written against JBossMQ will run with JBoss Messaging without any changes.

JBoss Messaging does not have wire format compatibility with JBoss MQ so it would be necessary to upgrade JBoss MQ clients with JBoss Messaging client jars

Important

Even if JBoss Messaging deployment descriptors are very similar to JBoss MQ deployment descriptors, they are not identical, so they will require some simple adjustments to get them to work with JBoss Messaging. Also, the database data model is completely different, so don't attempt to use JBoss Messaging with a JBoss MQ data schema and vice-versa.