Invalid subscriptions on BPIPE.
I am using ETA, service BPIPE. I wanted to clear out some things @Jirapongse :
- When we try to subscribe to a security with an invalid name, do we directly get a RSSL_MC_STATUS messae (rsslStatus Message) with message.statusMsg.state.dataState as maybe RSSL_DATA_SUSPECT and streamState as RSSL_STREAM_CLOSED
or
do we first get a Refresh message with dataState as DATA_OK and streamState as RSSL_STREAM_OPEN and then we get a status message as above.
or
if my understanding is incorrect can you please explain the message flow for this
The reason why I am asking is because I am subscribing to a symbol kyUSDBHD_ARIO_Curncy. I am seeing that the states are okay. But when someone from my team confirmed with Bloomberg it appears that this symbol is invalid. - My understanding is that when there is a successfull subscription to a symbol there is no status message. Just we can see in the state of the rssl message in the refresh message. If the stream is closed or if data state is not okay we get a status message from provider, responding why the state changed. Is my understanding correct?
Thanks!!
Answers
-
Hello @Vyom
If the instrument is invalid, then the API would receive a status message with Stream Closed/Data Suspect. The API would not receive a Refresh message in this case. If the Refresh message is provided, it means that the instrument is valid. A status message may be provided anytime if state change occurs - for e.g. source goes down or the network connection is lost etc.
If you are seeing a different behavior, you can enable and capture the OMM message logs from the RTSDK and provide them here.
0 -
I assume that it relates to the Market Price domain. You can refer to the RDM Usage Guide (ETAC_RDMUsageGuide.pdf) for the message specifications of the Market Price domain.
Receiving a refresh message with the RSSL_STREAM_OPEN/RSS_DATA_OK state followed by a status message with the RSSL_STREAM_CLOSED/RSSL_DATA_SUSPECT state is valid according to the RDM Usage Guide.
However, our real-time data feed uses the status message to indicate an invalid item, as shown below.
<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="2" qosTimeliness="1" dataSize="0">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="5001" name="JPY=1"/>
<dataBody>
</dataBody>
</requestMsg>
<statusMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="4" containerType="RSSL_DT_NO_DATA" flags="0x28 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_STATE)" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_CLOSED" code="RSSL_SC_NOT_FOUND" text="***The record could not be found" dataSize="0">
<key flags="0x7 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE)" serviceId="5001" name="JPY=1" nameType="1"/>
<dataBody>
</dataBody>
</statusMsg>In the case of BPIPE, I assume it initially responded with a refresh message indicating the state RSSL_STREAM_OPEN / RSSL_DATA_OK, which signifies that the item stream was successfully opened. Subsequently, upon determining that the requested item was invalid, it sent a status message with the state RSSL_STREAM_CLOSED / RSSL_DATA_SUSPECT to close the item stream.
For the second question, both the refresh message and the status message include the state property, which can be used to determine whether the stream is open or closed. Therefore, a provider can use either message type to indicate the stream state.
0 -
Okay I also wanted to ask for every invalid symbol a status message is compulsory right?
like the consumer will receive a status message telling that its an invalid subcription if it so right?
0 -
I would summarize it this way:
The state property in a refresh or status message indicates whether a stream is open or closed, and whether the data is okay or suspect. Therefore, applications should always check the state property in both refresh and status messages.
For invalid RICs, we typically use the code and text fields to provide additional information.
<statusMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="4" containerType="RSSL_DT_NO_DATA" flags="0x28 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_STATE)" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_CLOSED" code="RSSL_SC_NOT_FOUND" text="***The record could not be found" dataSize="0">
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 37 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 697 Datastream
- 1.5K DSS
- 632 Eikon COM
- 5.2K Eikon Data APIs
- 12 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 4 Trading API
- 2.9K Elektron
- 1.4K EMA
- 256 ETA
- 563 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
- 281 Open PermID
- 46 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 751 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
- 122 Open DACS
- 1.1K RFA
- 107 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 96 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛