How can we differentiate RIC chain and RIC with actual market data. (I am trying to implement one consumer client for Chain decoding and the other client to handle actual data).
I am using java ema API to build consumer application. Example chains that i am subscribing (0#/FINRCORPORATE, 0#/FINRAGENCY)
And also can you let me know when do we get below errors..
Service State: Open / Suspect / None / 'channel down.'
Service State: Open / Suspect / None / 'Request timeout'
You can differentiate RIC chain and RIC by looking for a specific field named the REF_COUNT field(field id 239) within the response message. The REF_COUNT field specifies how many elements are listed in the RIC Chain regardless of the template type as shown below:
For more details of the RIC Chain, please refer to the Simple Chain objects for EMA - Part 1
Regarding Service State: Open / Suspect / None / 'Request timeout', EMA generates this message when it does not receives any response back for a RIC request from the server within RequestTimeout parameter(default is 15,000 milliseconds or 15 seconds). I suggest you increase the RequestTimeout parameter to fit your environment.
For example: to set the timeout to be 300,000 milliseconds or 5 minutes:
<Consumer> <Name value="Consumer_1"/> … <XmlTraceToStdout value="1"/> <RequestTimeout value="300000"/> </Consumer>
One way to find out the proper timeout for your environment is to set RequestTimeout to be 0. Then, EMA waits for a response indefinitely. Next, you can see in EMA XML trace log written on the console(set from XmlTraceToStdout=1 as shown above) when the request is sent and when the response(refresh) is received.
For the error: Service State: Open / Suspect / None / 'channel down.' It differs from the subject(chain subscription) /the original question(how to question to check RIC chain). It requires more info e.g. the whole log messages when the error occur, require more investigation and discussion to find out the real root cause of this error. Hence, I suggest you post this error as a separate question with more info. This will allows everyone can see the question obviously and can post the answers to help you accordingly.
@Pimchaya.Wongrukun Thanks for the quick response. The link you have provided helped me in understanding chains. But I am trying to access data for these two master rics TRACEBTDS.FINR & TRACEATDS.FINR and looks like these are not chains. May i know how can i subscribe these two RIC's to fetch the tarce data.
To subscribe to a RIC, EMA provides the method registerClient(…) of OmmConsumer class. The method can subscribe the RIC regardless of its domain types e.g. Market Price(i.e. your master RICs and your chain RICs), Market by Price, Market by Order, Market Maker. For more details of each domain type, please refer to [Elektron_SDK_Java_Package]\Java\Ema\Docs\EMAJ_RDMUsageGuide.pdf
The example snipped source code to subscribe to the master RICs TRACEBTDS.FINR and TRACEATDS.FINR to the service named ELEKTRON:
consumer.registerClient(EmaFactory.createReqMsg().serviceName("ELEKTRON").name("TRACEBTDS.FINR"), appClient); consumer.registerClient(EmaFactory.createReqMsg().serviceName("ELEKTRON").name("TRACEATDS.FINR"), appClient);
The default domain type of registerClient(…) is Market Price which is the domain type of your master RICs. Hence, you do not need to specify the domain type in the method. For more details of registerClient(..) method, please refer to [Elektron_SDK_Java_Package]/Java/Ema/Docs/refman/emajava/com/thomsonreuters/ema/access/OmmConsumer.html
I suggest you use example200__MarketPrice__Streaming Consumer application. The application demonstrates how to access Market Price data, decode each field according to its type. Please replace consumer.registerClient(…) in the application with the two lines above. Modify .serviceName(..), .host(…).username(…) to be your service, host and username respectively. The example result when I run the application to subscribe to your master RICs:
Item Name: TRACEBTDS.FINR Service Name: API_ELEKTRON_EPD_RSSL Item State: Open / Ok / None / 'All is well' Fid: 1 Name = PROD_PERM DataType: UInt Value: 5611 Fid: 2 Name = RDNDISPLAY DataType: UInt Value: 152 Fid: 3 Name = DSPLY_NAME DataType: Rmtes Value: CBA … Item Name: TRACEATDS.FINR Service Name: API_ELEKTRON_EPD_RSSL Item State: Open / Ok / None / 'All is well' Fid: 1 Name = PROD_PERM DataType: UInt Value: 5928 Fid: 2 Name = RDNDISPLAY DataType: UInt Value: 152 Fid: 3 Name = DSPLY_NAME DataType: Rmtes Value: Freddie Mac
Your chain RICs is Market Price domain so you can use example200__MarketPrice__Streaming to subscribe to them as well.
To understand developing EMA Java Consumer application clearly, I recommend you lean this from EMA Consumer section in Elektron SDK - Java Tutorials