As a temporary workaround for issue mentioned here https://community.developers.refinitiv.com/questions/28182/ema-ommconsumer-memory-leak-in-java-api.html we implemented a pool of consumers. It works, but now we faced another issue:
When the consumer sits idle in the pool it eventually disconnects from Reuters and when we eventually want to use it and query some data, we receive errors for few first attempts:
"Open / Suspect / None / 'Service not up'"
then for few next calls:
"Open / Suspect / None / 'Service not available'"
and then at some moment we start receiving actual data for all following calls, until we stop requesting data and consumer goes to idle state again for some time, in which case the whole scenario repeats.
We increased ConnectionPingTimeout parameter to 5 minuts, but then we have just a new limitation of 5 minutes for idling the consumer.
Since this parameter name is referring to "ping" I was expecting there is a "ping" going on behind the scene, but it turns out it's not (or is it?), so we implemented our own "kind of" ping mechanism, where we request snapshot data for one symbol every interval.
It's working, but it's far from ideal.
Is there a more appropriate way to keep the idle consumer "alive"?