We are now looking at ensuring our 3rd party Finesse application handles HA fail-over scenarios correctly. As I understand Finesse works similarly to CTIOS where there is a primary server and a secondary server. The secondary server is there to kick in should the primary fail.
On login currently we perform a SystemInfo call to ensure the primary server is IN_SERVICE and we then attempt to make the XMPP connection (using Smack API) to the primary server.
Question - at the initial login stage should we also be logging the agent into the secondary server as well as the primary so they are already connected to both servers so that if one goes down we can seamlessly just switch to the other?
I notice in the Cisco Finesse Web Developer guide there are a number of potential failover scenarios and notifications you may receive:
|Cisco Finesse Notification Service goes down||Client loses BOSH connection|
|Cisco Finesse Tomcat goes down||Finesse user presence is 'unavailable'|
|Finesse loses connection to the CTI server||Finesse sends SystemInfo notification of OUT_OF_SERVICE|
E.g. We are currently connected to primary finesse server...
If our XMPP connection loses connection e.g. (Finesse Notification Service goes down) is the onus on our application at that stage to then switch the Rest API connection & notification service connection over to use the secondary server instead of the primary?
If our we receive a presence unavailable for the Finesse user on the XMPP notification service connection e.g. (Finesse Tomcat goes down) is the onus on our application at that stage to then switch the Rest API connection & notification service connection over to use the secondary server instead of the primary?
If Finesse loses connection to the CTI server and we get an OUT_OF_SERVICE event do we try to connect to the secondary at that stage? Or do we wait for some time and retry? Presumably there will be failover of the CTI server component behind the scenes.
I might have more questions once I get into the deeper detail but I'm just at the early stages of trying to work out what we need to implement in our code to allow our desktop to handle HA failover scenarios.