question

Upvote
Accepted
488 12 13 27

Does EMA handle connection failover like RFA?

Within RFA, they include a very useful feature called "Warm Standby". This is highlighted within the "Features of RFA" section that I'm presently using that will automatically failover to a standby connection if my primary connection fails. Do I get something similar if I use EMA?

elektronrefinitiv-realtimeelektron-sdkrrtrfaema-apielektron-message-apiconnection
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvote
Accepted
1.2k 23 28 42

No, EMA and the underlying UPA ValueAdd library do not support warm standby only cold standby.

For EMA here is a summary:

v3.0.1 - Fixes cold standby support.
v3.0.0 - No standby support at all.

Hot standby support is only implemented within TREP as part of the ADH server.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvote
138 4 7 8

@Ripley79, the connection failover is listed in the new features of EMA 3.0.1.

My configuration is as follows:

<ConsumerGroup>
	<!-- DefaultConsumer parameter defines which consumer configuration is used by OmmConsumer			-->
	<!-- if application does not specify it through OmmConsumerConfig::consumerName()					-->
	<!-- first consumer on the ConsumerList is a default consumer if this parameter is not specified	-->
	<DefaultConsumer value="Consumer_3"/>
	<ConsumerList>
		<Consumer>
			<Name value="Consumer_1"/>


			<!-- Channel is optional: defaulted to "RSSL_SOCKET + localhost + 14002" -->
			<Channel value="Channel_1"/>


			<!-- Logger is optional: defaulted to "File + Success" -->
			<Logger value="Logger_1"/>


			<!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
			<Dictionary value="Dictionary_1"/>
		</Consumer>
		<Consumer>
			<Name value="Consumer_2"/>
			<!-- ChannelSet is optional: defaulted to "RSSL_SOCKET + localhost + 14002" -->
			<ChannelSet value="Channel_1, Channel_2"/>
			<Logger value="Logger_2"/>
			<Dictionary value="Dictionary_2"/>
		</Consumer>
        <Consumer>
        <Name value="Consumer_3"/>
        <!-- ChannelSet is optional -->
        <ChannelSet value="Channel_1, Channel_2"/>
        <!-- Logger is optional: defaulted to "File + Success" -->
        <Logger value="Logger_1"/>
        <!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
        <Dictionary value="Dictionary_1"/>
        </Consumer>
	</ConsumerList>
</ConsumerGroup>
<ChannelGroup>
	<ChannelList>
		<Channel>
			<Name value="Channel_1"/>


			<!-- ChannelType possible values are: -->
			<!-- ChannelType::RSSL_SOCKET    - TCP IP connection type -->
			<!-- ChannelType::RSSL_HTTP      - Http tunnel connection type -->
			<!-- ChannelType::RSSL_ENCRYPTED - Https tunnel connection type -->
			<!-- ChannelType::RSSL_RELIABLE_MCAST - Reliable multicast connection type -->
			<ChannelType value="ChannelType::RSSL_SOCKET"/>


			<!-- CompressionType is optional: defaulted to None -->
			<!-- possible values: None, ZLib, LZ4 -->
			<CompressionType value="CompressionType::None"/>
			<GuaranteedOutputBuffers value="5000"/>


			<!-- ConnectionPingTimeout is optional: defaulted to 30000 -->
			<ConnectionPingTimeout value="30000"/>
			<!-- TcpNodelay is optional: defaulted to 1 -->
			<!-- possible values: 1 (tcp_nodelay option set), 0 (tcp_nodelay not set) -->
			<TcpNodelay value="1"/>
			<Host value="apis23"/>
			<Port value="14002"/>
			<XmlTraceToFile value="1"/>
		</Channel>
		<Channel>
			<Name value="Channel_2"/>
			<ChannelType value="ChannelType::RSSL_SOCKET"/>
			<CompressionType value="CompressionType::None"/>
			<GuaranteedOutputBuffers value="5000"/>
			<Host value="localhost"/>
			<Port value="14002"/>
		</Channel>

The DefaultConsumer was set to Consumer_3, so my EMA consumer app connected to the host listed in Channel_1. When the ADS in Channel_1 went down, my app switched to another provider running on localhost as expected.


ema-answer1.png (18.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

That is cold standby, not warm standby.

Click below to post an Idea Post Idea