What are the possible options to validate RICs using EMA JAVA API? Is it only Callback "Record Not Found" response or do we have any other API to validate multiple rics in single call?
All the market data APIs, EMA C++, Java, ETA, WebSockets etc are data agnostic and rely on the servers (infrastructure) to validate content. This design is intentional to keep the interfaces to the data as neutral as possible.
When I build applications and need to determine the validity of RICs, I usually use simple tools like the SpeedGuide utility or examples available within the API package that I modify to suit my needs. This way, I can feed the data into these utilities to validate responses from the infrastructure.
For us RIC names will be changing daily based on series. So we may not have same name always and there will be thousands of them. Is there API in EMA which we can leverage for this.
Thanks and Regards,
If I understand you correctly, you are looking for something like this within the API:
bool valid = consumer.isRicValid("<ric name>")
Unfortunately, no such interface exists. You would have to register interest and determine validity based on what is returned (An image) or (A status indicating 'not found').
I'm not clear on exactly what the issue is with the mechanism that works today, vs something that is exclusively designed to validate RICs. An API that is designed to validate a RIC would ultimately have to go out to the infrastructure, so I'm not sure what we're gaining here.
Thank You @nick.zincone.1! I totallt agree with you this is what i have observed so far. I was double checking in case we have something dedicated for API validation as in one of our usecase we would like to validate almost 10000 of RICS and registering each item was not looking optimal. I could see we have batch subscription in EMA, But again, i think the response for the batch will also be in similar flow i.e. we will receive 10000 callbacks either (An image) or (A status indicating 'not found'). Please correct me if i am missing something here in terms of batch processing. Another question on similar line is are we supposed to use one consumer for registering 10000 items and will that impact performance? Because we have discovered recently that creating a consumer is costly in terms of memory it takes and App cannot afford multiple consumer.
The main concern for us is the time EMA takes to return values for 10000 RICS.
Batch requests are designed for both convenience and optimization. You are correct that while you can send a single batch request, you will receive individual responses from the infrastructure.
Registering interest to all your items using one consumer is the way you need to design your application. A consumer forms a connection into the server. Creating multiple consumers (connections) to send down individual instruments would likely result in much more overhead and be significantly slower because each connection must go through the initial login, directory and dictionary logic.
Hope this helps.