Java RealTime SDK: how to detect RIC closed by ATS then reopened

Hello
I am using Java RealTime SDK to connect my application to TREP.
<dependency>
<groupId>com.refinitiv.ema</groupId>
<artifactId>ema</artifactId>
<version>3.7.3.0</version>
</dependency>
It is able to subscribe for RICs and to receive realtime market data
One of our client complaints about an issue when consuming RICs published from ATS:
- my application connects to TREP and subscribes to a RIC published from ATS by the customer
- my application correctly receives to image and the updates of the RIC
- client closes the RIC on ATS
- client reopens the RIC on ATS
- starting from now, my application does not receive anymore RIC updates
In order to bypass this issue, the client needs to restart the application (I guess a resubscription to the RIC is needed)
I contact you in order to know what is the best thing to do in this situation?
- I guess that if the application resubscribes to the RIC when receiving the RIC-closed notification, the new subscription will be refused
- so I would like my application being notified when the RIC is reopened: is there a way to do this?
- or is there another solution offered by the SDK that I don't yet know?
Thank you very much
Regards
Philippe MESMEUR
Answers
-
Thank you for reaching out to us.
This is strange. Typically, the application can close the stream by calling the unregister method.
void unregister(long handle)
Relinquishes interest in an open item stream.
Then, the application can subscribe to item by calling the registerClient method.
long registerClient(ReqMsg reqMsg, OmmConsumerClient client)
Opens an item stream.To verify the problem and avoid all known issues, the client can update the version of EMA to 3.8.3.0.
Then, enable the debug log and XML trace to check the behaviors in EMA.
0 -
Hi,
it was more or less clear to me that I had to unsubscribe the resubscribe to the RIC (by calling
unregister()
/registerClient()
).Calling
unregister()
is rather easy: I can to it when being notified that the RIC was closedBut when should I call
registerClient()
?- I imagine that if I call it while the RIC is still closed, I will be notified… that the RIC is closed
- so I can do it "only" when the RIC is opened: but how can I know that the RIC is open?
Does RealTime SDK offers feature for being notified that a RIC "switches" from closed to opened?
Thanks for helping
Regards,
Philippe
0 -
The opened streams can be closed by the server and the client's application.
- The server can close the opened streams by sending the messages with the closed stream states. The application can check the stream states via the EMA callback methods. In this case, the application will not call the unregister method to close the stream.
- The application calls the unregister method to close the opened streams.
The Enterprise Message API assigns all opened items or instruments a unique numeric id (handle). The application should maintain which handles have been closed either by the server or the application.
For more information, please refer to this discussion's thread.
0 -
Ok, thank you for clarification
The application can check the stream states via the EMA callback methods. In this case, the application will not call the unregister method to close the stream.
Please let me know if I'm right or wrong; As I understand, my application can/should "listen" to EMA events in order to be notified about stream state changes, e.g. when a RIC is closed
When being notified of a "RIC closure", my application should not close the RIC, i.e. it should not call the
unregister()
methodAm I right?
what will happen next? how my application will be notified that the RIC is opened again?
If possible, I would appreciate a sample
Thanks for all
Regards,
Philippe
0 -
The full one is:
The server can close the opened streams by sending the messages with the closed stream states. The application can check the stream states via the EMA callback methods. In this case, the application will not call the unregister method to close the stream.
This is valid when the server closes the streams.
After the stream is closed, the application can open it again by calling the registerClient method. This method will return a handle. The application will be notified that the stream is open or closed via the callback methods.
0 -
After the stream is closed, the application can open it again by calling the registerClient method…
so as I understand, when receiving a "RIC closed" status, my application has to resubscribe to it.
The application will be notified that the stream is open or closed via the callback methods
However, if the RIC is still closed, my application will will receive once again a "RIC closed" status
⇒ so I guess my application should subscribe again and again to the RIC until it get a "RIC opened" status
In other words, RealTime SDK does not provide a way for notifying that a RIC switches from closed to opened: am I right?
Regards,
Philippe
0 -
Yes, when the stream was closed, the only way to reopen it is resubscribing.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 684 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 249 ETA
- 554 WebSocket API
- 37 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 643 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 26 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 192 TREP Infrastructure
- 228 TRKD
- 915 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛