Universal Messaging across Data Centres

Hello all

We operate on two datacentres that are 1000+kms apart. Our configuration of the systems are

Data Centre1 running:

Application 1
Integration Server 1
Universal Messaging 1 (3 nodes clustered)

Data Centre 2 running:

Application 2
Integration Server 2
Universal Messaging 2 (having 3 nodes clustered)

Please note that the UM1 (UM in data centre 1) and UM2 (UM in data centre 2) are not clustered across the data centres (DC) due to the limitation that the latency between these data centres is more than 10 ms (18 ms). SoftwareAG’s recommendation is to not cluster the UMs across data centre if the latency is greater than 10 ms.

Current setup:
Application1 in DC1 is configured to UM 1
Application 2 in DC2 is configured to UM2

Application 2 runs active-passive i.e. Application 2 in DC2 is active and the same application 2 is passive in DC1.
But the application 2 can be activated in DC1 anytime (making the application 2 in DC2 passive)
The queue / topic definitions or configurations are identical in UM1 & UM2

Problem Statement:
As stated in ‘current setup’, Application 1 has to publish a file to Application 2 via UM. In the above scenario: Application 1 doesnt know if the application 2 is active in data centre 1 or data centre 2. It publishes the message to UM in DC1. Application 2 is subscribing to this message in UM in data centre 2 and not on data centre 1. So the message is published to UM1 while the subscribing application is looking for the message in UM2.

I cannot hardcode Application 1 to always publish the message to UM2 because the application 2 can either sit on DC1 or DC2. We dont want the application to get tightly coupled.

How can i overcome this problem? Can application 2 listen to the same queue in UM1 and UM2 (Since the queue definitions are identical in UM1 and UM2)?

Please let me know your thoughts.


Hi Satheesh,
Application2 in DC2 is running as active and it has a passive setup in DC1. This setup is established for ‘Disaster Recovery’. Application2 will not be made active in DC1 unless there is a problem in DC2. Switching Application2 from DC2 to DC1 is not a regular exercise unless there is a DR.

In your scenario, currently you have Application1 in DC1 publish message(s) to Application2 in DC2 by directly using the hostname (i assume you are using JMS connections and pointed the UM in DC2). You may have to change the ‘pattern’ of this publish model. Instead, you would have to invoke a Load Balancer URL and execute a web service or REST service which in turn will publish the message to the UM of that DC. During a DR, LB URL would be pointing to the DC where application2 is active.