EMA Webinar Nov 2: When the network is congested, how does EMA handle the messages? Does it guarante

This is a question from Webinar on Wednesday, 2nd November, 2016 (APAC Session)

Best Answer

  • I'll try to answer best I can.

    What exactly do you mean by "network is congested" ? Do you mean the network path between the two endpoints, i.e. between your app and the server? If so congestion is handled by the TCP stack. Nothing to do with EMA.

    If you mean what will happen if more data is pushed to the consumer application than it can handle? As a developer it is your responsibility to make sure the TCP socket where the server is sending you data is drained as often as possible. If you don't, then your application will be a slow consumer. The server-side (the ADS) has a few tricks to detect this situation but ultimately it will have to cut the channel to your application if your application cannot keep up. This is known as a "channel overflow" in TR world* and your application will see it as it gets disconnected for no good reason. The real reason will be in the server-side logs. This is the No1 reason why people get confused in a streaming world. It looks as if there's something wrong with the connection but it is really your own application which isn't fast enough. The problem is that there's no way for the server-side to send a message to a slow consumer saying "you are not fast enough, if you do not improve I'll disconnect you". The reason why that wouldn't work is that the consumer application is already tied up with processing messages, so it doesn't help to send it yet another message.

    There's no guaranteed delivery. Believe me, you don't want that type over overhead for market data transmission.

    *) Outside TR world most IT developers (I think) would refer to this situation using the term back pressure. Same thing.

    Hope this helps.

    Lars @ Addicticks

Answers

  • When there is a network congestion problem, if the severity is very high, and leads to the disconnection between EMA and the server. Then, EMA will sense this problem and try to recover the network connection automatically, and re-request the watchlist again.

    However, if there were lost messages sent from the server when the problem was occurring, EMA can't be able to aware of them. It can just retrieve the latest data from the REFRESH response message once the connection and data stream are recovered again.