How can individual messagges recover in EMA

If consumer receiving refresh or update messages is there way to uniquely identify each message( there is a seqnum field can we use this value for identification). And if there is missing message (gap in sequence numbers) can we request these messages individually, can this kind of scenario happen in API or is it handled by the API and transparent to the consumers.

Best Answer

  • EMA cannot request any
    specific data message; it returns the current data when an application subscribes
    an item and data occurs after that till the application unsubscribes the item. When this
    is missing message due to connection lost, EMA will recover the connection and
    re-subscribe items automatically; the application does nothing. Hence, the
    application will get the current data after EMA re-establishes the connection
    successfully. For example, the connection lost happens at 10.00. During
    10.00-10.01, there are 3 data messages e.g. message1, 2 and
    3 containing the same fields. EMA can re-establish the connection at 10.01. Hence, the application will
    receive the message 3 which are the current value. If message1,2 and 3 containing the different fields(message1-field id 10, message2-field id 20 and messages3-field id 30), EMA returns a message containing message1,2 and 3 which is the current value of each field.

Answers

  • From the scenario given that you want to get a missing tick in the recent past, it simply means that you just want that historical data again.

    As far as I know, it is impossible that Real-time API products such as EMA or RFA request a single update tick for an item because a server sends only latest data to downstream at the first time (refresh) following by updates if it occurs. So, the missing message should be replaced in the server's cache already by recent data.

    Besides, if considering the request message header, it does not have a sequence number in it which clearly implies that you can't specify a sequence number with a request message.

    The closest scenario that we can imagine for this case is that if the server feed provides Time and Sales (TAS) version of the particular item, you can send a request and specify date and time for the missing message that you are interested in with the item name.

    To request TAS data, you can use a prefix small ‘t’ in front of the base RIC to get the trade data within that day. In addition, you can specify a back date (maximum back date is 14 day) and time as well using the following name convention:

    -------------------------------------

    Time and Sales RIC naming

    -------------------------------------

    t<BASE_RIC>\[hhmm][-n]

    hh – hour

    mm – minute

    n – day that you want to request in the past

    Note:

    Data will be shown in SEG_TEXT (FID=258)

    PREV_LR (237) and NEXT_LR (238) link to the previous and next record.

    Here there are some examples of Time and Sales requests around 7:00AM of 6 July 2016 :

    tTRI.N/1000 - trade data of TRI.N before 10:00 of this day.

    FIELD_ENTRY 258/SEG_TEXT:
    16:02:00.914 56232 40.4500 05JUL 1841878 CLT
    15:59:59.851 4000 40.4500 05JUL 1840807
    15:59:58.161 61 40.4500 05JUL 1839427 ODD

    Remark: There was no trading for TRI.N at this moment (it wasn't 10:00), so the server sent the recent occurrences instead.

    tTRI.N/1000-1 - trade data of TRI.N before 10:00 of yesterday.

    FIELD_ENTRY 258/SEG_TEXT:
    09:59:32.943 100 X 40.5900 05JUL 179871 M_SWEEP
    09:58:58.501 100 X 40.5700 05JUL 175847 M_SWEEP
    09:58:43.189 14 X 40.5600 05JUL 174681 1065

    In other hand, if the feed doesn't provide TAS version of the particular RIC, the server will send the result as follows:

    FIELD_ENTRY 258/SEG_TEXT:
    NO LOG FOR THIS INSTRUMENT

    However, there is a concern for TAS because Elektron Feed team plans to release a new Time Series service that provides historical data, so TAS may go obsolete in the future but there is no obvious End of Life date set yet.

  • To verify if there is missing message, you may refer to this "How to verify all ticks were captured?" question