Hi I am using Real-Time-SDK-2.0.6.L1, C++ EMA. Is using WarmStandbyChannelSet makes usage of ChannelSet redundant. What kind of additional resiliency I get by using both of these features ?
@thilinaillangasinghe
You can specify both WarmStandbyChannelSet and ChannelSet configurations in a consumer but API will pick the WarmStandByChannelSet first. If it is unable to connect to the servers in the WarmStandByChannelSet, it will use the ChannelSet configurations instead. Therefore, WarmStandbyChannelSet and ChannelSet can't be active at the same time for a consumer.
Both options are valid so it depends on the requirements. WarmStandbyChannelSet provides better resiliency than ChannelSet. However, it uses more computing resources than ChannelSet because it needs to establish and maintain connections to all servers in the warm standby group. Moreover, you need to enable the warm standby feature on the servers (ADS).
In summary, if you want better resiliency (faster recovery), you need to use WarmStandbyChannelSet. You may set the ChannelSet as a backup mechanism to handle a situation when all servers in the WarmStandbyChannelSet are down.
You can refer to the WarmStandbyChannelSet configuration in the EMA Configuration Guide.
The ChannelSet is a failover mechanism. There is one connection at a time. If the connection to the first channel has been disconnected, API will fail over to the next channel in the ChannelSet. Once the connection has been established, API will resubscribe to all items in the watch list.
With the WarmStandbyChannelSet, a consumer establishes connections to both an active server and standby servers. The standby servers are aware of items an application has subscribed for so during a failover APIs don't need to re-subscribe items to the standby servers. Therefore, Warm Standby can reduce overall recovery time.
For more information, please refer to the following articles.
Thanks!. In summery, both ChannelSet and WarmStandbyChannelSet are failover mechanisms and WarmStandbyChannelSet failover mechanism is faster (no need to re-subscribe) and supports service-down events as well. This means, I have no reason to go with ChannelSet instead of WarmStandbyChannelSet right ? Still I couldn't understand in which situations should I choose ChannelSet instead of WarmStandbyChannelSet and in which situations should I go for both.