Hi I am developng an Java EMA application in order to consume data from ERT. The service discovery and Item registration works fine, but after 300 seconds I get kicked out.
I cannot find in the documentation the proper way (in Java) to renew the login token. I have the Login message received containing the first token and the (Unix) time when it will expire but I do not know what to do with this. How do i send a new LoginReq? What shoud be contained? The user/password/appId or the old token?
I have experimented with the consumer example 430, but the consumer.reissue call leads to a NullPointer exception.
Does anyone have a working example for this?
Thanks and kind reagrds
It is possible that EMA does not receive new token from EDP gateway e.g. network issue or EDP gateway sends new token too late when TREP authentication token has expired already. By default, EMA requests a new access token by multiplying the token’s published timeout by 0.8 which is every 4 minutes(token expire in 5 minutes) according to TokenReissueRatio parameter of Consumer. Hence, EMA requests token once before the token expires. Please try to increase the number of request token by adjusting TokenReissueRatio parameter e.g. 0.3(try to request token 3 times within in 5 minutes).
If the problem still occurs even adjusting TokenReissueRatio parameter, please contact ERT in Cloud support team who can help you to investigate the server side by opening the ticket via Product Support | MyRefinitiv . Select Product as Elektron Real Time in Cloud.
EMA sends the refresh token to proactively obtain a new access token prior to the published expiration timeout(300 seconds) to keep the ERT connection. Hence, the application does nothing about re-login as shown in the figure below:
For more details, please refer to section 6.3.3 Refreshing the Access Token and Sending a Login Reissue in EMA Java Developers Guide
You can try example450__MarketPrice__QueryServiceDiscovery to consume data from ERT. Please refer to EMA Quick Start - Connecting to Elektron Real Time in Cloud for more details to run the example.
many thanks for your answer. Actually I have based my application on example450__MarketPrice__QueryServiceDiscovery and it works fine. Nevertheless, yesterday the application ceased to receive updates and in the log I found:
RDMLogin stream was closed with status message
username (some lenghty string)
State: Closed/Suspect/Timeout - text: "TREP authentication token has expired."
Which led me to believe that I had to manage this myself.
What could be the reason for this?