How to interpret Login messages for invalid user/service for Java EMA api, We have to handle scenari

Preparing a server side application to fetch market price using EMA api in JAVA. Creating OMM consumer while the application is getting up . The invalid message is getting logged via ema internal apis but not able to collect it by using any handler

Best Answer

  • @malika.guptaPlease view of the subscriber examples available with Java EMA SDK.

    They register status callback handler such as:

    public void onStatusMsg(StatusMsg statusMsg, OmmConsumerEvent event) 
    {
    System.out.println(statusMsg);
    }

    The app will receive and can detect a status of

    "...state="Closed / Suspect / User unknown ..."

    "...state="Closed / Suspect / None / 'Service name of 'YOUR_SERVICE_NAME' is not found.'"

    Do you see it?

Answers

  • zoya.farberov for the reply.


    I am creating connection i.e. consumer object with user and server configuration on application startup and using that connection only, serving multuple requests.
    Want to capture the status at the time of creation of consumer object only, how can we do it? And is it fine to do this way, creating consumer only once?

  • @malika.gupta,

    Do you have the status callback registered as shown in the example?

    Then in order to test that it is working as expected, please try with

    1. Invalid user - see the status trigger

    2. Invalid service - see the status trigger.

  • Hi @malika.gupta

    Could you please re-test the scenario with EMA Java 1.1.0 (Elektron SDK 3.1.0) which is the latest version? This version has fixed the "Consumer application does not receive denied login message/event" issue. You can use the EMA Java example330__Login__Streaming to verify the issue.

  • Hi @malika.gupta

    EMA is a realtime asynchronous API - so can expect to get Status Msgs as and when the status of a stream changes e.g. the Login stream, individual Data Item streams etc.

    If you try to connect with an invalid user then you would expect to get a StatusMsg shortly after the connection attempt.

    However, once you are up and running it is still entirely possible that you could get StatusMsgs later as and when the state of a stream changes. e.g. if the server connection is lost or an item is closed or if a user is de-permissioned in realtime and so on.

    And yes, one Consumer at startup is usually fine for a typical consumer. And a single consumer can be used to register interest for multiple instruments - either by using the Batch facility (example370__MarketPrice__Batch) or by repeatedly calling registerClient for each instrument you wish to consume.