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 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, DB2, Sybase, MS SQL Server, PostgreSQL and MySQL
HTTP transport to allow use through firewalls that only allow HTTP traffic
Servlet transport to allow messaging through a dedicated servlet.
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
Strict message ordering. JBoss Messaging's implementation of strict message ordering is called message ordering groups. Messages in one ordering group obey strict delivering order, which means that messages in an ordering group will be delivered exactly in the order of their arrival at the target queue (FIFO). Ordering groups can be enabled by either programming APIs or configuration.
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.
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
This system property controls the default behavior when constructing a JBossMessage object from a foreign message object. If set to true, the JBossMessage constructor will try to extract the native byte correlation ID from the foreign message headers. If set to false, it will use the normal string type JMSCorrelationID. If this system property is absent or is given some value other than 'true' and 'false', it will defaults to 'true'.
This system property controls what kind of exception a JMS XAResource throws when the prepare is called after the connection is broken. If this property is not defined, an XAException with XA_RBCOMMFAIL error code will be thrown. If this propertie is defined, an XAException with XA_RETRY error code will be thrown instead. JBM by default doesn't define this property.