We’re using Refinitiv EMA version 3.9.1.1 and running into an issue with initial connection recovery.
The traditional config options for reconnect handling (ReconnectAttemptLimit, ReconnectMinDelay, etc.) don’t seem to work in this version.
Scenario:
We’re simulating API loss by routing our EMA connection through a local proxy.
If the proxy is initially online and we successfully log in, everything works as expected: killing and restarting the proxy does not disrupt the connection permanently, EMA automatically restores the session.
However, if we start the application with the proxy offline, after about 45 seconds we see a login timeout, and starting the proxy after this point does not trigger reconnection. The API becomes effectively unusable.
Relevant logs during initial connection attempt (proxy offline):
13:21:39.737 [ema-api-1] TRACE com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace
Text: Attempt to connect using
1] SOCKET
Channel name ALC_Primary
Instance Name PriceConsumer_1
RsslReactor @34ea22e1
InterfaceName
hostName localhost
port 14002
CompressionType None
tcpNodelay true
reconnectAttemptLimit -1
reconnectMinDelay 1000 msec
reconnectMaxDelay 5000 msec
guaranteedOutputBuffers 100
numInputBuffers 100
sysRecvBufSize 65535
sysSendBufSize 65535
connectionPingTimeout 30000 msec
initializationTimeout 5 sec
loggerMsgEnd
13:21:39.880 [ema-api-1] TRACE com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace
Text: Received ChannelOpened on channel ALC_Primary
Instance Name PriceConsumer_1
loggerMsgEnd
13:21:39.882 [ema-api-1] TRACE com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace
Text: Successfully created a Reactor and Channel(s)
Channel name(s) ALC_Primary
Instance Name PriceConsumer_1
loggerMsgEnd
13:21:39.887 [ema-api-1] WARN com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: ChannelCallbackClient
Severity: Warning
Text: Received ChannelDownReconnecting event on channel ALC_Primary
RsslReactor @34ea22e1
RsslChannel @5312dd68
Error Id 0
Internal sysError 0
Error Location Reactor.processWorkerEvent
Error text Error initializing channel: errorId=-1 text=Connection refused: no further information
loggerMsgEnd
13:21:39.893 [ema-api-1] DEBUG com.yieldbroker.ema.processor.EmaPriceListener - [onStatusMsg] Received message: StatusMsg
streamId="1"
domain="Login Domain"
state="Open / Suspect / None / 'channel down'"
StatusMsgEnd
After the login timeout expires we get:
13:22:24.884 [ema-api-1] ERROR com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: PriceConsumer_1
Severity: Error
Text: login failed (timed out after waiting 45000 milliseconds) for localhost:14002)
loggerMsgEnd13:22:24.887 [ema-api-1] ERROR com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg
ClientName: ChannelCallbackClient
Severity: Error
Text: Received ChannelDown event on channel ALC_Primary
Instance Name PriceConsumer_1
RsslReactor Channel is null
Error Id 0
Internal sysError 0
Error Location null
Error text Reactor shutting down...
loggerMsgEnd
Is there a recommended way to handle initial login retries in EMA 3.9.1.1 without breaking the automatic reconnection that works after a successful login? Essentially, we want the client to keep retrying to log in until the proxy/API becomes available, but still leverage the built-in automatic recovery after login.
Thanks!