Error posting using Ema Consumer

Parik
Parik Newcomer
edited May 20 in EMA

Hi,

I am using example ex340_MP_OnStreamPost of EMA Java API to post data. I have made changes for testing with beta environment setup for our application.

Attached is the code and output which shows that I am able to view the data from custom page. From decoded data the datatype seems to be 'rmtes'.

So we made changes to post rmtes buffer to field Id 339. However it does not seem to posting. Are we using correct posting mechanism?

Thanks.

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Parik

    Thank you for reaching out to us.

    You can't post messages directly to our real-time service, such as "IDN_RDF". You need to post messages to the Contribution Channel, then the data will be available through the real-time service.

    For more information, please refer to this Contributing your data to Refinitiv article.

    Would you mind clarifying your goal or objective?

  • Parik
    Parik Newcomer

    Jirapongse,

    Thanks for quick reply.

    I have made slight change to code (see attached OnStreamPost.java_new) but most of it is same as per article.

    Objective: We have existing page '1FHLBA1' where we post data using RFA 7.2 libraries. We are upgrading to EMA libraries and want to test posting data to same page. I am able to retrieve data from the page

    '1FHLBA1' ' (see lines 45-82 in attached OnStreamPost.log). Next step is to test updating Fid #339 on

    1FHLBA1 (refer to line 72 in OnStreamPost.log).

    Error: Per lines 84-96 in the log file, I noticed AckMsg(s) with errors.

    Please advice if we are using correct values in Service/ Name etc. and if the callbacks/flow we are using are correct for updating target page 1FHLBA1

    Thanks!

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Parik

    You need the Contribution Channel in order to post data to the Real-Time network.

    Please let me know if you have the Contribution Channel.

  • Parik
    Parik Newcomer

    We don’t have contribution channel. We have been posting to service = DCS_MARKETLINK

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Parik

    Yes, you need to post to the MarketLink service.

    Howerver, MarketLink is being replaced with Contribution Channel as the means of contribution.

  • Parik
    Parik Newcomer

    Do you have sample program to test with?

    How do we find configuration info required for this specific to our environment, for eg Channel Name?

  • Parik
    Parik Newcomer

    Also, can we continue to use MarketLink service? Is there any timeline when Marketlink is going to be obsolete?

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Parik

    Please contact the product support team directly via MyAccount regarding the MarketLink service.

    Regarding the Contribution Channel examples, please refer to the Contributing your data to Refinitiv article.

  • Parik
    Parik Newcomer

    We are testing using the example in above link under section: "Contribution through Refinitiv's Real-Time Distribution System"

    We are able to receive the RefreshMsg from the target page with existing data.

    Received Refresh. Item Handle: 2 Closure: com.refinitiv.ema.access.OmmConsumerImpl@fb445a3
    Item Name: 1FHLBA1
    Service Name: IDN_RDF
    Item State: Open / Ok / None / '*All is well'
    Fid: 1 Name = PROD_PERM DataType: UInt Value: 3784
    Fid: 2 Name = RDNDISPLAY DataType: UInt Value: 151
    Fid: 259 Name = RECORDTYPE DataType: UInt Value: 25

    However when we are trying to update value of a specific field (say Fid:1) in callback method onRefreshMsg( ) using below code,

    PostMsg postMsg = EmaFactory.createPostMsg();
    UpdateMsg nestedUpdateMsg = EmaFactory.createUpdateMsg().streamId(refreshMsg.streamId()).name("1FHLBA1");
    FieldList nestedFieldList = EmaFactory.createFieldList();
    nestedFieldList.add(EmaFactory.createFieldEntry().intValue(1, 3785));
    nestedUpdateMsg.payload(nestedFieldList );
    
    ((OmmConsumer)event.closure()).submit( postMsg.postId( ++postId).serviceName("DCS_MARKETLINK")
    .name( "1FHLBA1" )
    .solicitAck( true ).complete(true)
    .payload(nestedUpdateMsg), event.handle() );

    we get error:

    Received AckMsg. Item Handle: 1 Closure: com.refinitiv.ema.access.OmmConsumerImpl@fb445a3
    Item Name: 1FHLBA1
    Service Name: not set
    Ack Id: 2
    Nack Code: DeniedBySource
    Text: Unable to update fixed area of page or non-contributable field

    Is this because we need to setup the update msg in a different way?

    Thanks

    -Parik

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Parik

    The error could mean that you can't update that PROD_PERM field. The PROD_PERM field could be a non-contributable field.

    Please check with the product support via MyAccount for contributable fields.