JMS clustering
JMS clustering provides high availability and load balancing capabilities that can be configured for your JMS queues.
High availability is critical for JMS systems that demand near-zero downtime. High availability ensures that, even if a JMS server in the cluster goes down, another JMS server in the cluster will remain up and running to process the messages. This automatic, seamless failover between servers will continue as long as at least one server in the cluster is running.
Load balancing enables you to distribute incoming load or concurrent JMS requests across multiple application server instances. The more nodes in the cluster, the more application traffic can be handled. If an instance were to fail, the application traffic would still be handled but by fewer nodes. More servers running in parallel can improve throughput and latency as client applications can spread the load across the servers.
- IBM supports integration services and agents differently. Therefore, you may need to set up separate JMS servers for integration services and agents.
- If you are transitioning from standard JMS queues to clustered JMS queues, you need to be aware of any impact this may have on third-party applications. For example, you may need to set up a different set of servers for any third-party applications that do not use JMS clusters.
- If you implement JMS clustering capabilities, do not also implement backup capabilities as unpredictable results may occur.
Oracle webLogic JMS
For Oracle WebLogic JMS, IBM supports both high availability and load balancing for integration services. You can set up customized configurations to use either high availability or load balancing, or a combination of both high availability and load balancing.
When setting up JMS clustering on Oracle WebLogic JMS, ensure that:
- The Queue Connection Factory and queues are deployed to either a cluster of servers or to multiple JMS servers that are deployed on a cluster of application servers. If you want to configure your system for only high availability JMS clusters, the resources can be deployed to the cluster itself. However, if you want to configure your system for load balancing, two or more JMS servers must be created and the resources must be deployed to the JMS servers rather than to the application servers.
- The queues are defined as “Distributed Queues”.
- The JMS servers must be deployed on the “migratable” server targets.
- The Provider URL field in the JMS SDF is a comma-separated value comprising the host/IP and port. For example: t3://<IP Address>:<port>,<IP Address>:<port>
IBM MQ
For IBM MQ, IBM supports both high availability and load balancing for integration services. You can set up customized configurations to use either high availability or load balancing, or a combination of both high availability and load balancing.
IBM MQ provides different options for load balancing and high availability. The options that IBM support include:
- IBM MQ clusters, which provides load balancing for queue senders; it does not provide load balancing for queue receivers.
- IBM MQ multi-instance queue managers, which provides high availability using active/passive failover.
When these two options are implemented together, they provide virtually complete high availability and load balancing capabilities. Note, however, that the URL for these may differ depending on what JNDI is used to host the Queues and Queue Connection Factories (QCFs). Also, load balancing and high availability for the JNDI needs to be considered separately from the queueing system.
IBM WebSphere default messaging
For IBM WebSphere Default Messaging, IBM supports both high availability and load balancing for integration services. You can set up customized configurations to use either high availability or load balancing, or a combination of both high availability and load balancing.
When setting up JMS clustering on IBM WebSphere Default Messaging, ensure that:
- The Provider URL field in the JMS SDF is a comma-separated value comprising the host/IP and port. The following URL is not an actual location; the URL is provided as an example of the comma-separated format: corbaloc::10.10.46.90:2816,:10.10.46.70:2817
- You need to deploy the Queue Connection Factory and the queues onto a Service Integration Bus (SIB) that is deployed on the cluster.
TIBCO EMS
For TIBCO EMS, IBM supports only high availability for both integration services and agents.
TIBCO has an active/passive model for high availability, and provides robust failover capabilities. When the primary server (the active server) in a cluster of two servers fails, the load automatically shifts to the secondary server (the passive server) in the cluster. When the primary server comes back online again, it comes up in passive mode, because the secondary server has now become the active server. If the secondary server fails, the load automatically shifts back to the original primary server, which becomes the active server again. This automatic failover between the two servers will continue as long as at least one server in the cluster is running.
When setting up JMS clustering on TIBCO EMS, the Provider ULR field in the JMS consumer SDF component must be set up as a comma-separated value comprising the host/IP and port. For example: tcp://devdell91001:7222,devdell04:72222