New posts are disabled while we improve the user experience.

You can browse the site, or for urgent issues, raise a query at MyAccount.

question

Upvotes
1 0 0 0

RFA Jar upgrade from version 5.2 to 8.2 for JAVA technology/API

Dear Refinitiv Support Team,

Our project java base application currently uses RFA version 5.2, which has now become outdated. At the client’s request, we are in the process of upgrading to RFA version 8.2. Given that our application was originally built on the Market Data Layer interface, we are encountering challenges because RFA 8.2 has fully deprecated the MDL, requiring us to transition to the OMM interface.

In our consumer side implementation, we have encountered some constants and classes from RFA 5.2 for which we are unable to identify replacements in the OMM interface. Below is a list of the constants and classes that we’re using in our current codebase, specifically in the processEvent method, for which we are seeking guidance on suitable alternatives in RFA 8.2.

Constants:

  • Event.MARKET_DATA_SVC_EVENT
  • Event.ENTITLEMENTS_AUTHENTICATION_EVENT
  • MarketDataItemEvent.IMAGE
  • MarketDataItemEvent.UNSOLICITED_IMAGE
  • MarketDataItemEvent.UPDATE
  • MarketDataItemEvent.CORRECTION
  • MarketDataItemEvent.CLOSING_RUN
  • MarketDataItemEvent.GROUP_CHANGE
  • MarketDataItemEvent.RENAME

Classes:

  • MarketDataSvcEvent
  • TibMsg
  • TibField

If it would help, I can provide sample code illustrating how our application is currently implemented with the Market Data Layer. This could provide more context for our usage and help identify alternative approaches in the OMM interface.

New JAR Manifest Details:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.8.0_51-b16 (Oracle Corporation)
Build-Date: 2024-02-09 05:05:49
Specification-Title: RFA Java
Specification-Version: 8.2
Specification-Vendor: Refinitiv
package_Version: 8.2.4.L2.all
Implementation-Version: 8.2.4.L2.all

Could you please advise on suitable replacements for the above constants and classes, or provide guidance on how to implement similar functionality using the OMM interface in RFA 8.2?

Thank you for your assistance with this migration.

Regards,
Bhavya Dudhia

#technologyrfajavaOMMconsumereventsmigration
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
28k 68 18 14

Hello @bhavya.dudhia

If you are migrating from the legacy RFA version 5, I strongly suggest you migrate to the strategic Enterprise Message API (EMA API) of the Real-Time SDK Java edition. The EMA is the open-source Message level API that can connect and consume data from the LSEG Real-Time Platform via the RSSL connection (the same as RFA 8). The EMA API let you interact with the connection and OMM data via easier to use API interfaces than the RFA API.

The example code of the EMA Consumer API is as follows:

// Process Incoming Data
class AppClient implements OmmConsumerClient{
    public void onRefreshMsg(RefreshMsg refreshMsg, OmmConsumerEvent event){
        //Process Refresh Msg
    }
    
    public void onUpdateMsg(UpdateMsg updateMsg, OmmConsumerEvent event) {
        //Process Update Msg
    }


    public void onStatusMsg(StatusMsg statusMsg, OmmConsumerEvent event) {
        //Process Status Msg
    }
    
    public void onGenericMsg(GenericMsg genericMsg, OmmConsumerEvent consumerEvent){}
    public void onAckMsg(AckMsg ackMsg, OmmConsumerEvent consumerEvent){}
    public void onAllMsg(Msg msg, OmmConsumerEvent consumerEvent){}
    
}


public class Consumer {
    public static void main(String[] args){
        OmmConsumer consumer = null;
        try
        {
            AppClient appClient = new AppClient();
            
            //Establish a connection and send OMM Login Request to the Real-Time Platform
            consumer  = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig().host("localhost:14002").username("user"));
            
            //Send Item Request to to the Real-Time Platform
            consumer.registerClient(EmaFactory.createReqMsg().serviceName("IDN_RDF").name("IBM.N"), appClient);
            
            Thread.sleep(60000);            // API calls onRefreshMsg(), onUpdateMsg() and onStatusMsg()
        }
        catch (InterruptedException | OmmException excp)
        {
            System.out.println(excp.getMessage());
        }
        finally 
        {
            if (consumer != null) consumer.uninitialize();
        }
    }
}

You may notice that the EMA API uses the callback methods to process each message type as follows:

  • Refresh/Image message: onRefreshMsg()
  • Update messages: onUpdateMsg()
  • Status messages: onStatusMsg()

An application can choose to let the API automatic dispatches incoming messages to those callback methods, or an application can dispatch them manually. The suggested examples to check ares:


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
28k 68 18 14

Hello @bhavya.dudhia

Please note that the RFA MarketFeed class cannot be compared to the EMA (and RFA) OMM class one-by-one. However, some comparisons are as follows:

### Event.MARKET_DATA_SVC_EVENT ###

Like I said above, the EMA API automatic dispatches messages to a valid callback methods.

  • Refresh/Image message: onRefreshMsg()
  • Update messages: onUpdateMsg()
  • Status messages: onStatusMsg()
  • Ack messages: onAckMsg()
  • Generic Messages: onGenericMsg

However, there is the com.refinitiv.ema.access.Msg class that represents all message types. It has the domainType() method that returns the message's domain type information.

### MarketDataItemEvent.IMAGE ###

In the EMA, the Refresh message class is com.refinitiv.ema.access.RefreshMsg.

### Market DataItemEvent.UPDATE ###

In the EMA, the Refresh message class is com.refinitiv.ema.access.UpdateMsg.

### MarketDataItemEvent.UNSOLICITED_IMAGE ###

The Unsolicited or Solicited information is now part of the Refresh Message attributes:

refresh-events.png

Please see EMA J RDM Usage Guide for more detail

### CORRECTION, CLOSING_RUN, etc. ###

This information as now part of the Update Message UpdateTypeNum component. Please see my colleague answer on this How to detect closing run events? old post for more detail.

update-events.png



refresh-events.png (132.0 KiB)
update-events.png (135.0 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.