can someone tell me if my RFA warm standby parameters are set up correctly?
\Logger\AppLogger\useInternalLogStrings = true \Logger\AppLogger\fileLoggerEnabled = false \Connections\Connection_RSSL\connectionType = "RSSL" \Connections\Connection_RSSL\traceMsgToFile = false \Connections\Connection_RSSL\rsslPort = "Port" \Connections\Connection_RSSL\serverList = "WarmStandbyGroup" \StandbyLists\WarmStandbyGroup\serverList = "IPAddress1,IPAddress2, IPAddress3"
Yes, the configurations look correct.
If ADS servers support warm standby, RFA will connect to all servers in the serverList. You can verify the server support from the login refresh in RSSL tracing. The value of SupportStandby must be one.
<refreshMsg domainType="RSSL_DMT_LOGIN" streamId="1" containerType="RSSL_DT_NO_DATA" ...> <key flags="0x26 (RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE|RSSL_MKF_HAS_ATTRIB)" ...> <attrib> <elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)"> ... <elementEntry name="SupportStandby" dataType="RSSL_DT_UINT" data="1"/> ... </elementList> </attrib> </key> <dataBody> </dataBody> </refreshMsg>
With WarmStandby, one is designated as an active server and the rest are standby servers. RFA will internally request the same items from both active and standby servers.
The consumer application receives updates only on the item streams opened on the active server; it does not get updates, status, unsolicited refreshes, and generic messages from the standby server(s). If the active server fails, RFA notifies one of the standby servers that it is the new active server. That server then begins sending data without the consumer application needing to re-request the items.
For more information, please refer to 16.2 Warm Standby in RFA Developers Guide.
Is there a simple c++ consumer example which handles failover(with on warm standby) ?
If you mean consumer example for Warm Standby, you can use any consumer example application (i.e. StarterConsumer, Consumer example). The Warm Standby failover is done by RFA, so there is no additional implementation required in application code.
Once the failover occurs, consumer application will receive unsolicited refresh and then update from new active server.
RFA uses session to manage the connections. The RFA application can't directly manage the connections. The connections can be disconnected by releasing the session and then reconnected by acquiring a new session. However, this method will increase the complexity of the application.
If you would like to directly manage the connections, I suggest to use other APIs, such as UPA or EMA.
How about RFA/Java? I configured startingActiveServer for primary and serverList for Standby. I am seeing user mount(connection) to primary and standby ADSs but OpenItens only count up on primary ADS. standby keeps "0" OpenItems.