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.
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:
Let us know how this works for you,
Please verify that:
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.