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 faberov, @umer.nalla,
The example was helpful. Between that and setting GuaranteedOutputBuffers, it appears to be working now.
Thanks,
Shawn
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
- 687 Datastream
- 1.4K DSS
- 621 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 4 Trading API
- 2.9K Elektron
- 1.4K EMA
- 254 ETA
- 557 WebSocket API
- 38 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
- 276 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
- 669 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
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 193 TREP Infrastructure
- 229 TRKD
- 917 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
- 48 中文论坛