1 Reply Latest reply on Oct 15, 2013 9:27 PM by Justin Bertram

    HornetQ Embedded Server Clustering options?

    Mandeep Sawhney Newbie



      Currently we are using HornetQ in embedded fashion with InVM transport + JMS along with Spring Integration in Tomcat. We are planning to deploy the application into a cluster for load balancing + fail over. There are no external clients that connect to the server as far as HornetQ is concerned and all message production and consumption happens within the application. SO far we do not have any SAN or distributed storage shared across cluster nodes. Will this be a show stopper for clustering?


      In general with the above config. what are my clustering options for HornetQ? Some of the scenarios in my application that I am concerned about are -

      1) Lets say client/browser submits a request which hits Node A - fires the message production which is stored in the journal location in Node A. When everything is working fine this message would be consumed by the server on NodeA. Buts lets say after the message is produced and stored in Node A it goes down before the message consumption. What are my options at this point of time to have the HornetQ server running on Node B consume the message. I do understand that InVM transport will not work and I will have to move to Netty. But will this work without the shared storage? The same goes for load balancing too. Can a request posted on Node A be served by the HornetQ server on Node B wihout the shared storage?


      I would appreciate the config changes required for this setting- if not the exact at least the out lines.




        • 1. Re: HornetQ Embedded Server Clustering options?
          Justin Bertram Master

          First things first...You don't need shared journal storage for clustering.  Shared journal storage is only used for HA functionality (e.g. fail-over).  Clustering and fail-over are independent in HornetQ.


          That said, the functionality you're describing (one node picks up another node's messages upon failure) is HA and not clustering.  In that case, you'd have to configure a live/backup pair and use either shared journal storage or network based replication.  Read more in the HornetQ documentation - High Availability and Failover.


          As to whether or not a message posted to node A can be consumed by a client on node B without shared journal storage, the answer is "yes."  For that kind of functionality you'd need to configure clustering.  Read more in the HornetQ documentation - Clusters.