We are using EMA 3.0 Java API in production. Recently we had an issue were in there was a login failure with one of the ADS server on our end and we couldn't stream the market data. EmaConfig.xml provides ChannelSets using which multiple ADS server can be configured to connect in case of a server failure. Examples from “Elektron SDK - 1.5.0.L1” shows the configuration xml can be provided to createOmmConsumerConfig method like below. Below work only with 188.8.131.52 version of the EMA API.
consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig("EmaConfig.xml").username("user"));
1. Can EmaConfig.xml be used with 3.0 version of the api, does it support ChannelSets ? any code samples ?
<ChannelSet value="Channel_1, Channel_2"/>
2. We downloaded “Elektron SDK - 1.5.0.L1” from developer portal https://developers.refinitiv.com/elektron/elektron-sdk-java/downloads
After extracting the zip it had below java api.
is this the latest version to upgrade ? any known issues with this version of the api ?
Any advice is greatly appreciated.
What is the exact version of EMA Java and ESDK that you are using?
The ChannelSet feature has been added in EMA Java version 3.0.3, so the EMA Java 3.5.0 can use this feature.
To use this feature you can set multiple Channels into ChannelSet configuration in Consumer node configuration of EmaConfig.xml file
<Consumer> <Name value="Consumer_2"/> <!-- ChannelSet specifies an ordered list of Channels to which OmmConsumer will attempt to --> <!-- connect, one at a time, if the previous one fails to connect --> <ChannelSet value="Channel_1, Channel_2"/> <Dictionary value="Dictionary_2"/> <XmlTraceToStdout value="0"/> </Consumer>
Next, place the EmaConfig.xml file in the application running directory and use set the consumerName() to the Consumer node that contains a ChannelSet.
consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig().consumerName("Consumer_2"));
You can find more detail in the following article and EMA Java examples:
The EMA Java 3.5.0 L1 (ESDK Java 1.5.0 L1) is the current latest version. You can find more detail regarding know issue in GitHub issue page.
1. Is EMA Java 3.5.0 L1 (ESDK Java 1.5.0 L1) production ready. When was this released ? what is the difference between G1 and L1 versions ?
The EMA Java 3.5.0 L1 (ESDK Java 1.5.0 L1) is production ready. It was released on 31th March 2020. You can download the API from https://developers.refinitiv.com/elektron/elektron-sdk-java/downloads link.
The "G" version is the development release while "L" is the production release (with full test). For production use, the "L" version is recommend.
2. What is the purpose of Dictionary and what is the default if this is not provided ?
Basically, Most of the items distributed on Refinitiv Real Time platforms use the field list data structure. This data structure is made of a list of field/value pairs that transport several values of an item.
Each element of a field list has a unique field ID (FID) and a value. The Dictionary is the mapping information between FID and Field name such as FID 22 is "BID" field and FID 25 is "ASK" field.
By default, the API automatics download Dictionary information from Elektron for applications. The application may choose to download the local Dictionary files (RDMFieldDictionary and enumtype.def files) instead. The Dictionary files can be downloaded from https://my.refinitiv.com/ web site (Category "MDS - General" -> Product "TREP Template Service Pack")
For more detail regarding the Dictionary and Elektron Real-Time concept, I strongly suggest you check the following articles:
3. Instead of XmlTraceToStdout can we use log4j to log the api logs ?
No, the API's XML trace message cannot be logged with other Java Logging libraries.