Friday, April 26, 2013

Weblogic JMS Clustering Configuration High Availability

Weblogic JMS – High Availability Configuration with UDD (Uniform Distributed Distribution)


Guys, as we all know a Weblogic Server cluster is a group of servers in a domain that work together to provide a more scalable, more reliable application platform than a single server. A cluster appears to its clients as a single server but is in fact a group of servers acting as one. 

JMS clustering also work in the same way, instead of defining a single queue which can be targeted to only a single JMS server, you can define a UDD distributed queue or topic  which you can targeted to multiple JMS servers in a cluster and the client can send message to distributed queue where this message can be load balanced to any JMS server in the cluster.


So, the basic architecture with a two managed server cluster


  • Create a cluster with two managed server
  • Create two JMS servers pointing to each of the Managed server, you can create custom file base or JDBC filestore for each of the JMS server or the default one for each of the server will be use ( which is $DOMAIN/servers/YOUR_SERVER/data/store/default )
  • Create a JMS module targeted to the cluster
  • Create a Subdeployment under JMS module targeted to your both of the JMS server
  • Create a JMS resource “Distributed Destination” under your JMS module and target to you previous created Subdeployment ( in step 4 )
<!--[if !supportLists]-->

See below graphical architecture

  • Here, you have two managed servers Managed-Server1 and Managed-Server2 which you have clustered under cluster – JMSCluster
  • Two JMS servers, JMS-server1 and JMS-server2 with corresponding persistent stores Persistent-stroe1 and Persistent-store2, targeted to Managed-server1 & Managed-server2
  • JMS module JMSMod1 which is targeted to your cluster
  • Under JMSMod1, Subdeployment SD1 which is targeted to your both JMS servers JMS-server1 & JMS-server2
  • A distributed queue DQ1 under Subdeployment SD1




Now, JMS client ( here in diagram QS ( queue sender ) )  will sends message to distributed queue DQ1, and distributed Queue DQ1 will load balanced the messages ( according to the load balance algo selected during creation of distributed queue, round robin by default ) between both JMS servers and message receiver ( here in diagram its QR ( queue receiver ) ) will receive the message from any of the JMS server.


In the same way you can define distributed topic.


No comments: