- TIBCO SmartSockets has many built-in methods for handling network and system failures including:
- avoiding operations that can block indefinitely
- periodically checking for potential failure conditions using keep-alives
- auto start and restart of RTserver, with an option setting
- RTservers can reconnect if network failures cause a temporary break
- hot failover of RTservers and RTclients
- message buffering
- guaranteed message delivery
- dynamic message routing
- real-time monitoring of IPC, RTclient, and RTserver information
- RTclients can be set to try to automatically restart RTserver if the connection is broken.
- The RTclient Server_Names option is used to specify a list of nodes, such as logical connection names, where the RTclient should try to find an RTserver and whether to try to start that RTserver.
- Simply by setting options, RTclients can be programmed to automatically fail over to a new RTserver should their connection with their current one be broken for any reason. In general, this provides quicker recovery than trying to restart an RTserver.
- There are a number of options, all starting with Server_, which can be used to tune how quickly RTserver connection failures are detected and from which they are recovered.
- RTclients can be set up in primary-backup pairs, such that if a primary RTclient fails, its backup can automatically take over.
- TIBCO SmartSockets provides a flexible mechanism for buffering incoming and outgoing messages for an RTclient. The maximum amount that RTserver buffers for one RTclient is specified by the RTserver option Client_Max_Buffer.
- TIBCO SmartSockets includes capabilities for guaranteeing message delivery (GMD). This can be set on a per-message or per-message-type basis. GMD guarantees delivery and ensures messages are processed only once. GMD eliminates the need to write complex error recovery code.
- Guaranteed messages can be given a time-to-live through a message delivery timeout. This is set in a message property using the function TipcMsgSetDeliveryTimeout. If this property is not set, a message’s delivery timeout defaults to the value of the Server_Delivery_Timeout option.
- The status of a guaranteed message can be checked using TipcSrvGmdMsgStatus. This function returns a list of those RTclients that have successfully acknowledged the message and a second list of RTclients where GMD has failed.