Handling of connection issues within Refinitv Elektron SDK API

We use Refinitv Elektron SDK API (ema.jar, upa.jar, upaValueAdd.jar version 3.5.0.0) to connect to Refinitiv to get market data.

Looking for some insights on how the Refinitv Elektron SDK API library internally handles the following connection event scenarios and what type of login stream events are mapped to these:

image

Scenario A

Refinitiv servers doesn’t receive any update from TWEB server due to some connection issues. But the ClientComponent (connecting to Refinitiv using Refinitv Elektron SDK API) has an active/healthy connection with the Refinitiv servers. Will information around this error scenario will be supplied to ClientComponent via StatusMsg ? If so what would be that StatusMsg look like ?

Scenario B

Does “Refinitv Elektron SDK API” internally sends some heartbeat messages to the “Refinitiv Servers”. Scenario: If the connection of the “ClientComponent using Elektron SDK API” is active with the “Refinitiv Servers”, but no updates are being received for X time, does the API mark the data as stale (and provide this information to the “ClientComponent”) ?

Best Answer

  • Hi @hardeepsangha,

    Please note, EMA API will fully handle connection maintenance aspect on behalf of the application. The consumer code will not need to take any action on that.

    I would not recommend modifying the default, recommended timeout setting. However, it is exposed as Channel -> ConnectionPingTimeout and perhaps InitializationTimeout, please see the descriptions in EMA Configuration Guide, in section Universal Channel Entry Parameters.

    If you are looking to re-implement this handling, ETA allows to do so, as Transport tier API, it offers the greatest flexibility but also it requires significantly more effort to complete, on the part of the developer.

    You can test this aspect in your local environment, by running one of the simple consumer examples that came with SDK (extending to run longer then standard 90 sec is probably convenient for this purpose), and either plugging out the relevant network connection or disconnecting the relevant WiFi connection.

Answers

  • Hello @hardeepsangha,

    In ETA Java Developer Guide (state and status is conveyed to EMA application), section State please find the relevant information on State. Data state would reflect the disconnect of the publisher/source in this case Trade Web Server, the client/API loosing connection to infra will be reflected in stream state. I.e. if the client/API losses connectivity, we expect open streams such as Login, Dictionary, Channel to be CLOSED. It's preferable to examine state code, rather then text message, as those may change with the versions of the API.

    Would like to suggest also reviewing ChannelSet concept in EMA Configuraion Guide. If you have the connectivity to two endpoint and use ChannelSet, EMA will handle the failover on behalf of the consumer app.

    Please see Single Open in EMA Developer Guide, it is the default, and handles any subscriptions to items on reconnect, they will be recovered by the API.

  • Hi zoya.farberov ,

    Thanks for sharing the information. I read the relevant information around streamState/dataState.

    Can you please share some details around "Scenario B". Whether API sends some hearbeats to Refinitiv Servers / what is the frequency of sending heartbeats / what is the configured value of timeouts is ?

    I assume that if heartbeats are missed then the streamState will be updated to convey this information.