Multiple services with the same name
I'm using the RTS ETA API to build a consumer application. When processing a Directory Refresh/Update is it possible to receive information for services with the same name but different service id's?
If there are multiple services with the same name present, how should they be used?
Should services be used in a round-robin fashion, or should they be used one at a time?
Best Answer
-
Thank you for reaching out to us.
I assume that you are connecting to RTDS (Real-Time Distribution System). Please contact the RTDS support team directly via MyRefinitiv to verify if RTDS (ADS) can be configured to have multiple services with the same name.
Internally, ETA uses a service ID to request data. Service IDs should be unique in the retrieved service directory.
<requestMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="4" containerType="RSSL_DT_NO_DATA" flags="0x44 (RSSL_RQMF_STREAMING|RSSL_RQMF_HAS_QOS)" qosDynamic="0" qosRate="1" qosTimeliness="1" dataSize="0">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="2114" name="IBM.N"/>
<dataBody>
</dataBody>
</requestMsg>0
Answers
-
The sample Source Directory Refresh message below shows services with 1,2 and 3.
<refreshMsg domainType="RSSL_DMT_SOURCE" streamId="2" containerType="RSSL_DT_MAP" flags="0x168 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_CLEAR_CACHE)" groupId="0" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="RequestCompleted" dataSize="588">
<key flags="0x8 (RSSL_MKF_HAS_FILTER)" filter="3"/>
<dataBody>
<map flags="0x8 (RSSL_MPF_HAS_TOTAL_COUNT_HINT)" countHint="0" keyPrimitiveType="RSSL_DT_UINT" containerType="RSSL_DT_FILTER_LIST" >
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="1" >
<filterList containerType="RSSL_DT_ELEMENT_LIST" countHint="0" flags="0x2 (RSSL_FTF_HAS_TOTAL_COUNT_HINT)">
<filterEntry id="1" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="RSSL_DT_ASCII_STRING" data="TestService1"/>
<elementEntry name="Capabilities" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_UINT">
<arrayEntry data="6"/>
</array>
</elementEntry>
<elementEntry name="IsSource" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="SupportsOutOfBandSnapshots" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="AcceptingConsumerStatus" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="Vendor" dataType="RSSL_DT_ASCII_STRING" data="valantic"/>
<elementEntry name="QoS" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_QOS">
<arrayEntry qosDynamic="0" qosRate="1" qosTimeliness="1"/>
</array>
</elementEntry>
</elementList>
</filterEntry>
<filterEntry id="2" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="ServiceState" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="AcceptingRequests" dataType="RSSL_DT_UINT" data="1"/>
</elementList>
</filterEntry>
</filterList>
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="2" >
<filterList containerType="RSSL_DT_ELEMENT_LIST" countHint="0" flags="0x2 (RSSL_FTF_HAS_TOTAL_COUNT_HINT)">
<filterEntry id="1" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="RSSL_DT_ASCII_STRING" data="TestService1"/>
<elementEntry name="Capabilities" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_UINT">
<arrayEntry data="6"/>
</array>
</elementEntry>
<elementEntry name="IsSource" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="SupportsOutOfBandSnapshots" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="AcceptingConsumerStatus" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="Vendor" dataType="RSSL_DT_ASCII_STRING" data="valantic"/>
<elementEntry name="QoS" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_QOS">
<arrayEntry qosDynamic="0" qosRate="1" qosTimeliness="1"/>
</array>
</elementEntry>
</elementList>
</filterEntry>
<filterEntry id="2" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="ServiceState" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="AcceptingRequests" dataType="RSSL_DT_UINT" data="1"/>
</elementList>
</filterEntry>
</filterList>
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="3" >
<filterList containerType="RSSL_DT_ELEMENT_LIST" countHint="0" flags="0x2 (RSSL_FTF_HAS_TOTAL_COUNT_HINT)">
<filterEntry id="1" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="Name" dataType="RSSL_DT_ASCII_STRING" data="TestService3"/>
<elementEntry name="Capabilities" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_UINT">
<arrayEntry data="6"/>
</array>
</elementEntry>
<elementEntry name="IsSource" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="SupportsOutOfBandSnapshots" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="AcceptingConsumerStatus" dataType="RSSL_DT_UINT" data="0"/>
<elementEntry name="Vendor" dataType="RSSL_DT_ASCII_STRING" data="valantic"/>
<elementEntry name="QoS" dataType="RSSL_DT_ARRAY">
<array itemLength="0" primitiveType="RSSL_DT_QOS">
<arrayEntry qosDynamic="0" qosRate="1" qosTimeliness="1"/>
</array>
</elementEntry>
</elementList>
</filterEntry>
<filterEntry id="2" action="RSSL_FTEA_SET_ENTRY" flags="0x0" containerType="RSSL_DT_ELEMENT_LIST">
<elementList flags="0x8 (RSSL_ELF_HAS_STANDARD_DATA)">
<elementEntry name="ServiceState" dataType="RSSL_DT_UINT" data="1"/>
<elementEntry name="AcceptingRequests" dataType="RSSL_DT_UINT" data="1"/>
</elementList>
</filterEntry>
</filterList>
</mapEntry>
</map>
</dataBody>
</refreshMsg>Services with id 1 and 2 have the same name. Is it possible for the ETA API to receive such a message whereby there are multiple services with the same name but different id's.
We are porting an application that previously used the RFA SDK 8.2.x to ETA API. In the RFA Configuration Guide document, Appendix C1 it mentions the follow:
If the single session contains multiple connections which provide the same service, creating service aliases for the services is required. In case the application needs RFA to automatically route the connections to request the item, using a service group is required as well. See Section 0 and the example below for details.Here, the RFA API needs special configuration where there are multiple services with the same name. It is the case that the ETA API ignores service names altogether and only relies on the service id. If this is the case, it then up to the application then to decide how the services with the same name are used, whether it be serial, parallel or round-robin.
0 -
ETA is a low level and high performance API. Typically, it provides the transport API to send and receive messageas and the message API to encode and decode messages.
Therefore, if you used ETA directly without the ValueAdded libraries, the application will retrieve that source directory message. Then, the application needs to choose the service for item subscriptions.
First, it is better to contact the RTDS support team directly via MyRefinitiv to verify if it is valid for the server to provide the same service name with different service IDs.
0
Categories
- All Categories
- 6 AHS
- 37 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
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛