Receiving duplicate update messages with Webscoket

Hi Team,

We are using Websocket for getting message updates. We are interested to receive json update messages for RICs only if any of the 3 fields ASK, BID and MID_PRICE changes.

To limit the fields in update message we have used "Views" in request where we have mentioned the above required fields. However we are still getting duplicate messages(having same bid, ask and midprice as before) for RICs.

So is it something that other fields which we have not mentioned in Views, but it is still considered as an Update even if clients don't need those fields update.

Request:

{
"ID": 2,
"View": [
"ASK",
"BID",
"MID_PRICE"
],
"Key": {"Name": [
"JPY="
]}
}

Below is the response format that we received:

{
"Type": "Update",
"Fields": {
"ASK": 111.52,
"BID": 111.49,
"MID_PRICE": 111.51
},
"DoNotConflate": true,
"ID": 59,
"SeqNumber": 59310,
"UpdateType": "Unspecified",
"Key": {
"Service": "ELEKTRON_DD",
"Name": "JPY="
}
}

Best Answer

  • wasin.w
    wasin.w admin
    Answer ✓

    Hello @amar.a.panigrahi

    This is an expected behavior of ADS and TREP infrastructure. The Views feature just lets ADS/TREP (in this case is the amer-3.pricing.streaming.edp.thomsonreuters.com server) to “filter out” uninterested fields out of Refresh and Update messages to the application.

    When the application receives duplicate View update messages from TREP, it means there are other “uninterested updated fields” from Feed/Exchange, but TREP filter out those fields from the message to API.

    Example of All Fields Update messages:

    RECEIVED: //Update 1 
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4094,
    "Fields": {
    "BID": 111.13, #BID
    "PRIMACT_1": 111.13,
    "ASK": 111.15, #ASK
    ...
    "ACVOL_1": 62802, #Updated Field
    "BID_TICK_1": "⇧",
    "MID_PRICE": 111.14, #MIDPrice
    }
    }
    ]
    RECEIVED: //Update 2
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4158,
    "Fields": {
    "BID": 111.13, #BID
    "PRIMACT_1": 111.13,
    "ASK": 111.15, #ASK
    ...
    "ACVOL_1": 62803, #Updated Field
    "MID_PRICE": 111.14 #MIDPrice
    }
    }
    ]

    When TREP receives the above update messages from Feed/Exchange, TREP will send just BID, ASK and MID_PRICE fields for the View consumer.

    Example of View Update messages:

    RECEIVED: //Update 1
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4094,
    "Fields": {
    "BID": 111.13,
    "ASK": 111.15,
    "MID_PRICE": 111.14
    }
    }
    ]
    RECEIVED: // Update 2
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4158,
    "Fields": {
    "BID": 111.13,
    "ASK": 111.15,
    "MID_PRICE": 111.14
    }
    }
    ]

Answers

  • @amar.a.panigrahi

    Basically, the Elektron WebSocket API just receives
    an incoming data from ADS server and passes it to the application as it is.

    I can replicate the issue with ADS 3.2.1 and your JSON request message. The application receives duplicate update messages.

    RECEIVED: 
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4094,
    "Fields": {
    "BID": 111.13,
    "ASK": 111.15,
    "MID_PRICE": 111.14
    }
    }
    ]
    RECEIVED:
    [
    {
    "ID": 2,
    "Type": "Update",
    "UpdateType": "Unspecified",
    "DoNotConflate": true,
    "Key": {
    "Service": "ELEKTRON_DD",
    "Name": "JPY="
    },
    "SeqNumber": 4158,
    "Fields": {
    "BID": 111.13,
    "ASK": 111.15,
    "MID_PRICE": 111.14
    }
    }
    ]

    To let us verify this behavior in detail could you please give us your ADS version that encounter the problem?

  • I am not sure about the ADS version, but below are some configuration that we use to get the Market price:

    reuters.host=amer-3.pricing.streaming.edp.thomsonreuters.com
    reuters.port=443
    reuters.scope=trapi