EMA API Reissue not working

Hi Refinitiv Support,

I have a use case where I open a streaming request for an item with 2 fields. After some time, I add 2 more fields to the item and invoke reissue on the consumer passing in the original item handle. The reissue is getting ignored as I still continue to receive only the initial 2 fields. I debuged and observed that the reissue request is throwing "reissue not allowed on an openstream" exception.

I checked the user guide and it appears you can invoke reissue this way without explicitly closing the stream.

Any idea what am doing wrong? Am using Java.

Regards,

josa

Best Answer

  • josa
    Answer ✓

    Hi @Wasin Waeosri,

    This is working now after I upgraded from version 3.2.0.1 to 3.3.0.1. Please close the ticket.

    Regards,

    josa

Answers

  • Hello @josa

    I did a quick test with EMA Java 3.4.0 (ESDK - Java 1.4.0) example360_MarketPrice_View example application. The example can send a reissue request and receive new set of fields successfully.

    My main Consumer.java function:

    AppClient appClient = new AppClient();
    consumer  = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig().host("172.20.33.30:14002").username("user"));
    appClient.setOmmConsumer(consumer);

    ElementList view = EmaFactory.createElementList();
    OmmArray array = EmaFactory.createOmmArray();
    array.fixedWidth(2);

    array.add(EmaFactory.createOmmArrayEntry().intValue(22)); //BID
    array.add(EmaFactory.createOmmArrayEntry().intValue(25)); //ASK

    view.add(EmaFactory.createElementEntry().uintValue(EmaRdm.ENAME_VIEW_TYPE, 1));
    view.add(EmaFactory.createElementEntry().array(EmaRdm.ENAME_VIEW_DATA, array));

    consumer.registerClient(EmaFactory.createReqMsg().serviceName("ELEKTRON_AD").name("/EUR=").payload(view), appClient);

    My AppClient class:

    public void onRefreshMsg(RefreshMsg refreshMsg, OmmConsumerEvent event){
    ...
    if (refreshMsg.state().streamState() == OmmState.StreamState.OPEN && refreshMsg.state().dataState() == OmmState.DataState.OK && !hasFirstRefresh ){
       System.out.println("Receive First Refresh!!");
       ElementList view = EmaFactory.createElementList();
       OmmArray array = EmaFactory.createOmmArray();

       array.fixedWidth(2);
       array.add(EmaFactory.createOmmArrayEntry().intValue(22)); //BID
       array.add(EmaFactory.createOmmArrayEntry().intValue(25)); //ASK
       array.add(EmaFactory.createOmmArrayEntry().intValue(15)); //CURRENCY 
       array.add(EmaFactory.createOmmArrayEntry().intValue(11)); //NETCHNG_1

       view.add(EmaFactory.createElementEntry().uintValue(EmaRdm.ENAME_VIEW_TYPE, 1));
       view.add(EmaFactory.createElementEntry().array(EmaRdm.ENAME_VIEW_DATA, array));

       _ommConsumer.reissue(EmaFactory.createReqMsg().serviceName("ELEKTRON_AD").name("IBM.N").payload(view), event.handle());

       System.out.println("Reissue Sent!!!");
       hasFirstRefresh = true;
       }
    }

    Result:

    Item Name: /EUR=
    Service Name: ELEKTRON_AD
    Item State: Open / Ok / None / 'All is well'
    Fid: 22 Name = BID DataType: Real Value: 1.1009
    Fid: 25 Name = ASK DataType: Real Value: 1.1013
    Receive First Refresh!!
    Reissue Sent!!!
    Item Name: /EUR=
    Service Name: ELEKTRON_AD
    Item State: Open / Ok / None / 'All is well'
    Fid: 11 Name = NETCHNG_1 DataType: Real Value: 0.0011
    Fid: 15 Name = CURRENCY DataType: Enum Value: USD
    Fid: 22 Name = BID DataType: Real Value: 1.1009
    Fid: 25 Name = ASK DataType: Real Value: 1.1013


    Could you please share your EMA Java version, you reissue source code and the XML trace file when the problem occurs?

    You can enable the EMA Java trace messages by setting <XmlTraceToStdout value="1"/> in the EmaConfig.xml file.