Version 4

    Load-balanced, fault-tolerant MDBs in HAJMS

     

    NOTE: This example is a contribution from a user.

     

    You should use hajndi-jms-ds.xml not the jms provider in this example. TODO: update this example

     

    Load-balancing message processing with MDBs is one of the best ways

    to distribute load across a cluster because the node with the least

    activity will process the message (as opposed to a round-robin

    load-balancing algorithm which could continue to place load on an

    already overloaded node).  The 3.2.4RC2 (April 13, 2004 drop) does

    not have load-balancing capabilities for MDBs across a cluster.

    Meaning, you cannot distribute the processing load across MDBs

    that are deployed on nodes other than the HASingleton node.  For

    instance, if you deploy an MDB on a non-master node in HAJMS, it will

    fail because the proper JMS services are not configured locally (they

    only exist on the master node!).

     

    The attached example, load-balanced-mdbs-example.zip, describes

    how to setup JBoss HAJMS for load-balancing your message

    processing across a cluster using MDBs.     It uses a custom JMS

    Provider that allows MDBs to connect to the JMS HASingleton node and

    process messages from it whether they are deployed on the master node

    or not.  When the singleton HAJMS server fails and another is

    selected, the custom JMS Provider re-connects (DLQHandlers,

    JMSContainerInvoker, etc.) to the new master node's resources whether

    the new master node is the local server or another remote server.

    The MDBs on live nodes keep on processing messages!