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
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.4K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 279 Open PermID
- 45 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 716 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛