Chapter 2. Introduction

JBoss Messaging provides an open-source and standards-based messaging platform to bring enterprise-class messaging to the mass market.
JBoss Messaging implements a robust, high-performance messaging core designed to support Service-Oriented Architectures (SOAs), Enterprise Service Buses (ESBs), and other integration requirements regardless of the level of demand.
JBoss Messaging lets you distribute application load evenly across your cluster. It balances each node's CPU cycles with no single point of failure, providing a highly scalable and performant clustering implementation.
JBoss Messaging includes a Java Messaging Service (JMS) front-end so that messages are delivered in a standards-based format, and to enable support for other messaging protocols in the future.

2.1. JBoss Messaging Features

JBoss Messaging provides the following features:
  • 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.)
JBoss Messaging also includes:
  • publish-subscribe and point-to-point messaging models;
  • persistent and non-persistent messages;
  • guaranteed message delivery that ensures messages arrive once and only once where required;
  • a transactional and reliable interface that supports ACID semantics;
  • a customizable JAAS-based security framework;
  • complete integration with JBoss Transactions (previously Arjuna JTA) to support full transaction recovery;
  • an extensive JMX management interface;
  • support for most major databases, including Oracle, DB2, Sybase, Microsoft SQL Server, PostgreSQL and MySQL;
  • HTTP transport, for use with firewalls that allow only HTTP traffic;
  • servlet transport to allow messaging through a dedicated servlet;
  • SSL transport;
  • configurable Dead Letter Queues (DLQs) and Expiry Queues;
  • message statistics; which provide a rolling historical view of the messages delivered to queues and subscriptions;
  • the automatic paging of messages to storage, which lets you use very large queues that would be too large to fit entirely within system memory; and
  • strict message ordering which results in messages belonging to a particular message group being delivered according to the order of their arrival at the target queue.
JBoss Messaging also includes the following clustering features:
  • Fully-clustered queues and topics

    Logical queues and topics are distributed across the cluster. You can send or receive a queue or topic to or from any node on the cluster.

  • Fully-clustered durable subscriptions

    A particular durable subscription can be accessed from any node of the cluster, letting you spread processing load from that subscription across the entire cluster.

  • Fully-clustered temporary queues

    If a sent message includes the replyTo of a temporary queue, it can be returned on any node of the cluster.

  • Intelligent message redistribution

    Messages are automatically moved between nodes of the cluster to take advantage of different consumer speeds on different nodes. This helps to prevent starvation or build-up of messages on a particular node.

  • Message order protection

    Enable this to ensure that the order of messages produced by a producer is identical to the order of messages consumed by a consumer. This works even if message redistribution is active.

  • Completely transparent failover

    When a server fails, your sessions continue exception-free on a new node. This is also completely configurable: if you do not want to implement this failover behavior, you can disable it and fall back to exceptions being thrown and manually recreating connections on a new node.

  • High availability and seamless failover

    If the node fails, you will automatically failover to a different node without losing any persistent messages and can seamlessly continue your session. Once and only once delivery of persistent messages is respected at all times.

  • Message bridge

    JBoss Messaging contains a message bridge component, which lets you bridge messages between any two JMS 1.1 destinations. This lets you connect geographically separate clusters and form large, globally-distributed logical queues and topics.