EMA Data Request: Available Services
consumer.registerClient(
EmaFactory.createReqMsg()
.serviceName("ELEKTRON_AD")
.name("BB.TO"),
eventHandler
);
I am trying to streaming data using the example posted at https://developers.thomsonreuters.com/elektron/elektron-sdk-java/learning?content=8738&type=learning_material_item
And I get the following error "Service name of 'ELEKTRON_AD' is not found"
Running tutorial 2...
Nov 06, 2017 11:53:15 AM com.thomsonreuters.ema.access.ChannelCallbackClient rea
ctorChannelEventCallback
INFO: loggerMsg
ClientName: ChannelCallbackClient
Severity: Info
Text: Received ChannelUp event on channel Channel
Instance Name EmaConsumer_1
Component Version ads2.6.12.L1.linux.tis.rrg 64-bit
loggerMsgEnd
StatusMsg
streamId="0"
domain="MarketPrice Domain"
state="Closed / Suspect / None / 'Service name of 'ELEKTRON_AD' is not found
.'"
name="BB.TO"
serviceName="ELEKTRON_AD"
StatusMsgEnd
May I know all the available serviceName we can use and their differences? It's not mentioned in the tutorial.
Why does this error occur?
Thanks!
Best Answer
-
Hello @hujunhu,
Please be informed that the service name that you can subscribe data is based on your TREP infrastructure and your permission. I recommend you contact your local Market Data team or Thomson Reuters representative regarding the service name for your subscription.
You can get the service names available in your ADS/EZD by checking the EMA trace file. The trace file shows incoming/outgoing messages between the API and TREP infrastructure. Please note that it shows the list of your TREP available service names only, you need to check with your local Market Data team or Thomson Reuters representative to verify which service name that you have a permission to subscribe data.
You can enable the EMA trace file by setting <XmlTraceToStdout value="1"/> in the EmaConfig.xml file.<DefaultConsumer value="Consumer_1"/>
<ConsumerList>
<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>Then you can configure the application to load EmaConfig.xml file by the following code
String configFile = "<path to config>\\EmaConfig.xml";
consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig(configFile).host("your ADS IP:RSSL Port").username("user"));The service names are available in SOURCE REFRESH Response message from TREP. You can find the service name in <elementEntry name="Name" dataType="ASCII_STRING" data="[SERVICE Name]"/> messages. Please see example from my TREP below:
<!-- Incoming Reactor message -->
<!-- java.nio.channels.SocketChannel[connected local=/10.42.68.162:64234 remote=/172.20.33.30:14002] -->
<!-- Mon Nov 06 14:29:52 ICT 2017 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<REFRESH domainType="SOURCE" streamId="2" containerType="MAP" flags="0x168 (HAS_MSG_KEY|SOLICITED|REFRESH_COMPLETE|CLEAR_CACHE)" groupId="0" State: Open/Ok/None - text: "" dataSize="1369">
<key flags="0x08 (HAS_FILTER)" filter="63"/>
<dataBody>
<map flags="0x00" countHint="0" keyPrimitiveType="UINT" containerType="FILTER_LIST" >
<mapEntry flags="0x00" action="ADD" key="50100" >
<filterList containerType="ELEMENT_LIST" countHint="0" flags="0x00">
<filterEntry id="1" action="SET" flags="0x00" containerType="ELEMENT_LIST">
<elementList flags="0x08 (HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="ASCII_STRING" data="ELEKTRON_DD"/>
<elementEntry name="SupportsQoSRange" dataType="UINT" data="0"/>
<elementEntry name="Capabilities" dataType="ARRAY">
<array itemLength="1" primitiveType="UINT">
<arrayEntry data="5"/>
<arrayEntry data="6"/>
<arrayEntry data="7"/>
<arrayEntry data="8"/>
<arrayEntry data="9"/>
....
</array>
</elementEntry>
<elementEntry name="QoS" dataType="ARRAY">
<array itemLength="0" primitiveType="QOS">
<arrayEntry Qos: Realtime/TickByTick/Static - timeInfo: 0 - rateInfo: 0/>
</array>
</elementEntry>
...
</filterList>
</mapEntry>
<mapEntry flags="0x00" action="ADD" key="2115" >
<filterList containerType="ELEMENT_LIST" countHint="0" flags="0x00">
<filterEntry id="1" action="SET" flags="0x00" containerType="ELEMENT_LIST">
<elementList flags="0x08 (HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="ASCII_STRING" data="ELEKTRON_AD"/>
<elementEntry name="SupportsQoSRange" dataType="UINT" data="0"/>
<elementEntry name="Capabilities" dataType="ARRAY">
<array itemLength="1" primitiveType="UINT">
<arrayEntry data="5"/>
<arrayEntry data="6"/>
<arrayEntry data="7"/>
<arrayEntry data="8"/>
<arrayEntry data="9"/>
<arrayEntry data="10"/>
...
</array>
</elementEntry>
...
</filterList>
</mapEntry>
....
</mapEntry>
</map>
</dataBody>
</REFRESH>1
Answers
-
Hi @hujunhu,
For most Elektron services
provided directly by Thomson Reuters to your application, the service name is
either ELEKTRON_DD, ELEKTRON_EDGE, or hEDD. Speak with your
Technical Account Manager if you are unsure.For larger customers operating their own TREP, developers should check with their Market Data department to ensure they connect to the right service. Not just the right service name but the right infrastructure for non-production work. That said, a lot of customers name their Elektron feed "IDN_SELECTFEED".
The technical method provided in the previous answer is useful to verify what services are available, but if you see more than one service you need to talk to the provider (Thomson Reuters or your Market Data department) to ensure you use the right one.
NOTE: In all cases where you receive sample source code from Thomson Reuters or other places, you must override the connection parameters (service hostname/IP, service port, service name, user name). These depend on the service you are subscribing to and cannot be copied from source code examples.
1
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛