When the ETA client does not consume data quickly enough and the output buffer fills up, the provider (ADS) simply disconnect the client without warning.
Is there a way for the consumer to verify if it's consuming data quickly enough ? For instance, is it possible to check the usage of the input buffer ?
The numInputBuffers cannot be used to verify the slow consumer issue. It is the number of sequential input buffers used by each RsslChannel for data reading. This controls the maximum number of bytes that can be handled with a single network read operation on each channel.
To verify the slow consumer issue on the consumer side, you can use the time difference (in seconds or milliseconds) between the timestamp of the machine and the time field (TRDTIM_1, QUOTIM, TRDTIM_MS, QUOTIM_MS, or SALTIM_MS) in the payload when decoding the data.
If the time difference is rather constant, the application is not a slow consumer. However, if the time difference is exceptionally increased, it is possible that the application is a slow consumer.
You can also re-design the application by separating threads which read and process (decode) the data. For example, the application can have a thread that reads, copies and puts the copied buffer into a queue. Then, it has another thread which gets the copied buffer from the queue and decodes it. With this method, the application can verify the slow consumer issue by verifying the number of copied buffers in the queue.