question

Upvotes
Accepted
3 0 1 6

Does Ema support SYMBOL_LIST?

Hey All,

Myself new to refinitiv API data stream.

We're trying to get pricing data using the EMA with java-17.

com.refinitiv.ema.access.EmaFactory;

When I try the below code by applying

consumer.registerClient(EmaFactory.createReqMsg().domainType(EmaRdm.MMT_SYMBOL_LIST).serviceName("FINANCE_PRICES").payload(batch), appClient);

receiving

Service Name: FINANCE_PRICES

Item State: Closed / Suspect / Usage error / 'Provider doesn't support symbol list requests'

I couldn't find any example in java version in this repo https://github.com/Refinitiv/Real-Time-SDK/blob/master/Java/Ema/Examples/src/main/java/com/refinitiv/ema/examples/training/ and I'm bit confused with the terms used here. Can someone shed some light on this showing any example code to make use of SYMBOL_LIST for financial prices? Thank you.

#technologyema-apisymbol-list
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.

Upvote
Accepted
26.3k 60 17 14

Hello @mohammedsardarmca

The EMA API does support Symbol List domain. I have checked your code. I found that your code is valid for requesting the Symbol List data. However, the 'Provider doesn't support symbol list requests' error message indicates that your RSSL Interactive Provider does not support Symbol List domain data request.


You can register the EmaRdm.MMT_DIRECTORY domain to subscribe your FINANCE_PRICES service data to check if the service supports Symbol List domain. You can see the example code on the ex331_Directory_Streaming example.

Example of ex331_Directory_Streaming:

ReqMsg reqMsg = EmaFactory.createReqMsg();
        
consumer.registerClient(reqMsg.domainType(EmaRdm.MMT_DIRECTORY).serviceName("{Your Service Name}"), appClient);

Result from my local service:

Received Refresh. Item Handle: 1 Closure: null
Item Name: <not set>
Service Name: <not set>
Item State: Open / Ok / None / ''
ID: 1 Action = Set DataType: ElementList Value: 
 Name = Name DataType: Ascii Value: API_ELEKTRON_EDGE_TOKYO
 Name = Vendor DataType: Ascii Value: Thomson Reuters
 Name = Capabilities DataType: OmmArray Value: 5, 6, 7, 8, 9, 10, 11, 13, 14, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 33, 34, 35, 126
 Name = DictionariesProvided DataType: OmmArray Value: RWFFld, RWFEnum
....

The Symbol List domain number is 10, so my API_ELEKTRON_EDGE_TOKYO service does support Symbol List domain.

Alternatively, you may contact your Market Data team to help you verify the server.

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
3 0 1 6

Thanks for your response. Just the terms makes me to go bit confused. EmaRdm.MMT_DIRECTORY is the new term of SYMBOL_LIST? Or do you feel this API provides same functionality of SYMBOL_LIST? Because we don't see any SUMBOL_LIST here.

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 @mohammedsardarmca

The MMT_DIRECTORY is a special request to provide you a list of the capabilities of your server - it is not associated with SYMBOL_LIST. The point of the above details was for you to programmatically determine what you are allowed to ask for in your server when using the service name: "FINANCE_PRICES". The array of numbers under the "Capabilities" are associated with things you can do and that the number '10' is specifically related to "SYMBOL_LIST". If you perform the above directory request in your environment, you can determine if a value of 10 comes back within the capabilities section. Hope this helps.

Upvotes
3 0 1 6

Oh, I'm receiving below when I run

consumer.registerClient(EmaFactory.createReqMsg().domainType(EmaRdm.MMT_DIRECTORY).serviceName("FINANCE_PRICES"), appClientSymbol, 0);


Response

Item Name: <not set>

Service Name: <not set>

Item State: Open / Ok / None / ''

Name Action


[main] WARN com.refinitiv.ema.access.OmmConsumerImpl - loggerMsg

ClientName: ChannelDictionary

Severity: Warning

Text: RDMDictionary stream was closed with status message

streamId 3

Reason State: Closed/Suspect/None - text: "Login stream was closed."

loggerMsgEnd

So, which means under FINANCE_PRICES we've not subscribed to any sort of capabilities at this time?


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
26.3k 60 17 14

Hello @mohammedsardarmca

Based on the following message:

Text: RDMDictionary stream was closed with status message
streamId 3
Reason State: Closed/Suspect/None - text: "Login stream was closed."

It means the API was disconnected from the server while requesting the FINANCE_PRICES service information.

### Next Steps ###

For further investigation, please give me the following information:

  • If you comment/remove the "consumer.registerClient(EmaFactory.createReqMsg().domainType(EmaRdm.MMT_DIRECTORY).serviceName("FINANCE_PRICES"), appClientSymbol, 0);" source code, does the issue occur?
  • Can you give me more detail about what your RSSL server is? Is it the deployed ADS server or OMM Interactive-Provider application?
  • The version of EMA Java (or RTSDK)
  • The XML trace logs when the problem occurs. The XML trace messages contain incoming-outgoing messages between the API and RSSL server. It will let me check the issue in detail. The XML trace messages also shows the Directory information which can check if your service support the Symbol List domain request.

You can enable the XML trace by setting the XmlTraceToStdOut in the EmaConfig.xml configuration file to "1".

Example:

<Consumer>
    <!-- Name is mandatory    -->
    <Name value="Consumer_1"/>
    <!-- Channel is optional: defaulted to "RSSL_SOCKET + localhost + 14002" -->
    <!-- Channel or ChannelSet may be specified -->
    <Channel value="Channel_1"/>
    <!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
    <Dictionary value="Dictionary_1"/>
    <XmlTraceToStdout value="1"/>
</Consumer>


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.

  • If you comment/remove the "consumer.registerClient(EmaFactory.createReqMsg().domainType(EmaRdm.MMT_DIRECTORY).serviceName("FINANCE_PRICES"), appClientSymbol, 0);" source code, does the issue occur? Even If I comment that out yet the situation is same.
  • EMA version 3.7.0.0
  • I presume they're using ADS since I can see some ADS term in the channel list.

I;m sorry that , I may not able to share all the information mentioned here as it's an open forum.

Upvotes
26.3k 60 17 14

Hello @mohammedsardarmca

I understand your point, please let me summaries what I have found from the given information.

  • The EMA API supports Symbol List subscription, but the server and service must support Symbol List domain (10) too.
  • The first error "Item State: Closed / Suspect / Usage error / 'Provider doesn't support symbol list requests'" means the RSSL server that the API is connected does not support Symbol List request.
  • The second error "RDMDictionary stream was closed with status message" and "Reason State: Closed/Suspect/None - text: "Login stream was closed." messages mean the API was disconnected from the server while requesting the FINANCE_PRICES service information from the server.

### Next Steps ###

There are three choices for continuing investigation.

The first choice is if you are the RDC named user, when you login this https://developers.lseg.com/ website with your company email address, you will see the "Contact premium support" button on the https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/rt-sdk-java page as follows:

rtsdk-contact-support.png

Then you can click this "Contact premium support" button to submit a support ticket to the Real-Time APIs support team. The Real-Time APIs support team is the dedicated support team with SLA (unlike us, the Q&A forum admins which do not have SLA).

The second choice is you can submit the GitHub - Issues page to the EMA Development team via the GitHub Real-Time-SDK GitHub repository website. Please note that they may as the same information as I requested (XML trace, etc).

The third choice is you may contact the ADS support team to verify if your ADS supports Symbol List and why the disconnection occur. You can submit a support ticket to the team via https://my.refinitiv.com/content/mytr/en/helpandsupport.html website with the following information.

1705411373863.png

I hope this information helps.



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.