OmmConsumer.registerClient hanging after too many tickers
I'm calling OmmConsumer.registerClient on 2000 symbols in a fairly tight loop and finding that it just hangs somewhere between 500 and 1500 symbols subscribed every time. I call registerClient for nth time, and it just never returns.
Any suggestions on how to address this? The actual subscription line is below. It works fine for a smaller number of registrations.
consumer.registerClient(reqMsg.clear().serviceName("ELEKTRON_DD").name(ticker),this)
Thanks,
Shawn
Best Answer
-
Hi @shawn11,
Attached, please find a helper example that reads a list of RICs from a file and requests them as a batch. It's a variation on MarketPrice Batch example 370 within SDK.
You will need to increase the guaranteed output buffers on your channel, I just tested with:
<GuaranteedOutputBuffersvalue="5000"/>
Let us know how this works for you,
-Zoya
0
Answers
-
Please verify that:
- GuaranteedOutputBuffers parameter is read from a file-based config and is not default, is sufficient to handle 2000 RICs
- Your user (ILA) is permissioned to access 2000 RICs (your account team will be bale to confirm this)
- In Elektron SDK, look at the example example370__MarketPrice__Batch. Batch is a requests for multiple instruments, you may find this to be better suitable for your requirements
0 -
Hi @shawn11
I have a simple EMA Java test app that reads the RICs from a file and calls registerClient for them in a tight loop and have used this for certainly more than 2000 RICs without problems - just tried with over 4000 RICs and its receiving updates fine. This loop is executed on the main application thread.
One thing I did note is that it appears that you are calling registerClient from within the callback client class. Is this loop invoked directly or indirectly from one of the callback event handlers such as onRefreshMsg, onUpdateMsg etc? I ask because these callback handlers are executed on an API thread - and you should keep any application level processing to a minimum on this thread - otherwise you impact the ability of the API thread to process any incoming events / messages from the server and could result in the connection being dropped.
0 -
Hi @Umer Nalla
What service are you using? I was able to do it with no hangs against DIRECT_FEED, but my account manager recommends we use ELEKTRON_DD, and while I was able to complete the subscriptions against DIRECT_FEED, I didn't get any callbacks.
I'm calling registerClient on the main application thread, not from within one of the OmmConsumerClient callbacks. My callbacks just take the update and store the update to redis.
0 -
Hi @shawn11
Sorry but I have been on leave.
DIRECT_FEED is just a placeholder servicename (it is also used as the default servicename by some of our Provider examples - which would allow you to connect your consumer to a dummy provider for testing).
ELEKTRON_DD would be the real service that has been configured for you to use by your TREP team or your TR account manager.
Did you get anywhere with the Batch example and guidance provided by Zoya?
0 -
Hi @zoya.farberov, @Umer Nalla,
The example was helpful. Between that and setting GuaranteedOutputBuffers, it appears to be working now.
Thanks,
Shawn
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛