question

Upvotes
Accepted
5 2 2 1

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

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-apijavasubscription
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
32.2k 40 11 20

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


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 20

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
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
25.3k 87 12 25

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

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.

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?

Upvotes
5 2 2 1

Hi @zoya.farberov, @Umer Nalla,

The example was helpful. Between that and setting GuaranteedOutputBuffers, it appears to be working now.

Thanks,

Shawn

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.