Elektron SDK - Java

API Family: Elektron

ETA Quick Start

Last update May 2018
Environment Windows, Linux
Compilers JDK 1.7 or greater
Prerequisites Setup your build environment as outlined in the ESDK Build System.

Access to an existing TREP or Elektron platform to retrieve content

Introduction

The goal of this Getting Started tutorial is to provide the developer the steps required to execute an Elektron Transport API (ETA) sample application within their environment.  ETA is a sub-component of the ESDK (Elektron SDK) package that includes a number of examples available to test specific functionality.  For our purposes, the goal is to walk through the procedure to specify the connection details to access your market data environment to connect and retrieve market data content.

The tutorial will cover both Linux and Windows environments.

Select a Consumer sample

Once you've completed the pre-requisite steps to establish your build environment as outlined within the ESDK Build System guide, we can demonstrate the retrieval of market data from Elektron by running the VAConsumer consumer sample. 

The VAConsumer example is functionally very rich, providing many features of an ETA consumer. The sample does not utilize any configuration file but rather uses the command line to specify configuration. For our purposes, we simply need to specify our market data server, and the data we wish to consume.  To determine the features and command line paramteters associated with this and any other example, you can execute the following Gradle command from the <ESDK root>/Java folder:

> gradlew runVAConsumer -PcommandLineArgs="-?"

Note: The name of the example above was determined by the examples listing demonstrated within the ESDK Build System guide.

Running the consumer

To successfully run this example, the following is required:

  • Server connection details
  • Service providing market data

You will need to reach out to your market data team to get this required information. 

For our tests, we will be using the minimal VAConsumer options to retrieve market data.  Below is the format of our request:

> gradlew runVAConsumer -PcommandLineArgs=" -c <server>:<port> <service> mp:<RIC>"

The server and service are values you will need to acquire from your market data team.  Once determined, we specify the Reuters Instrument Code (RIC) called: AAPL.O.  For example, this test is using a server called elektron on port 14002 using the service called: ELEKTRON_AD.

For example, when using Gradle, the following command was executed:

> gradlew runVAConsumer -PcommandLineArgs=" -c elektron:14002 ELEKTRON_AD mp:AAPL.O"

Running on either Windows or Linux, the output includes some initial information and some details related to the service we are connected followed by our market data output. The first update is our initial image containing all fields containing the latest up-to-date values. Following this image, we will begin to see updates reflecting changes in the market.

Ultra Performance API (UPA), Java Edition, LibraryVersionInfo
        productVersion: 3.2.0.1
        productInternalVersion: etaj3.2.0.L1.all.rrg
        productDate: Thomson Reuters
Consumer initializing...
Channel Up Event: java.nio.channels.SocketChannel[connected local=/10.194.156.227:56136 remote=elektron/10.65.117.12:14002]
Received Login Refresh for Username: U8007876
LoginRefresh:
        streamId: 1
        name: U8007876
        nameType: 1
        State: Open/Ok/None - text: "Login accepted by host cil-ads2."
        isSolicited: true
        applicationId: 256
        applicationName: ADS
        position: 10.194.156.227/U8007876-TPL-A
        providePermissionProfile: 0
        providePermissionExpressions: 1
        singleOpen: 1
        allowSuspectData: 1
        supportBatchRequests: 1
        supportBatchReissues: 1
        supportBatchCloses: 1
        supportOMMPost: 1
        supportOptimizedPauseResume: 0
        supportStandby: 0
        supportViewRequests: 1

Received Source Directory Refresh
DirectoryRefresh:
        streamId: 2
        State: Open/Ok/None - text: "null"
        clearCache: true
        solicited: true
        filter: INFO | GROUP | STATE
        Service:
                serviceId: 362
                InfoFilter:
                        serviceName: DDN_SSL
                        vendor: null
                        isSource: 0
                        supportsQosRange: 0
                        supportsOutOfBandSnapshots: 1
                        acceptingConsumerStatus: 1
                        capabilities: [5, 6, 10]
                        dictionariesProvided: [RWFFld, RWFEnum]
                        dictionariesUsed: [RWFFld, RWFEnum]
                        qos: [Qos: Realtime/TickByTick/Static - timeInfo: 0 - rateInfo: 0]
                StateFilter:
                        ServiceState: 1
                        AcceptingRequests: 1
        Service:
                serviceId: 356
                InfoFilter:
                        serviceName: ELEKTRON_AD
                        vendor: Thomson Reuters
                        isSource: 0
                        supportsQosRange: 0
                        supportsOutOfBandSnapshots: 1
                        acceptingConsumerStatus: 1
        
        ...

(Channel java.nio.channels.SocketChannel[connected local=/10.194.156.227:56136 remote=elektron/10.65.117.12:14002]):
AAPL.O
DOMAIN: MARKET_PRICE
State: Open/Ok/None - text: "All is well"
        1/PROD_PERM: 74
        2/RDNDISPLAY: 66
        3/DSPLY_NAME: APPLE INC
        4/RDN_EXCHID:    (0)
        6/TRDPRC_1: 187.25
        7/TRDPRC_2: 187.26
        8/TRDPRC_3: 187.27
        9/TRDPRC_4: 187.26
        10/TRDPRC_5: 187.26
        11/NETCHNG_1: -0.65
        12/HIGH_1: 188.0
        13/LOW_1: 186.78
        14/PRCTCK_1: ■(2)
        15/CURRENCY: USD(840)
        16/TRADE_DATE: 30 MAY 2018
        18/TRDTIM_1: 16:42:00:000:000:000
        19/OPEN_PRC: 187.72
        21/HST_CLOSE: 187.9
        22/BID: 187.25
        23/BID_1: 187.25
        24/BID_2: 187.25
        25/ASK: 187.26
        26/ASK_1: 187.26

        ...

        32582/ODDTRN_UNS: 1.684766157622E8
        32741/TRNOVR_UNS: 1.7507135208645E9
        32743/ACVOL_UNS: 9351427

(Channel java.nio.channels.SocketChannel[connected local=/10.194.156.227:56136 remote=elektron/10.65.117.12:14002]):
AAPL.O
DOMAIN: MARKET_PRICE
UPDATE TYPE: QUOTE
        22/BID: 187.25
        25/ASK: 187.26
        30/BIDSIZE: 3.0
        31/ASKSIZE: 2.0
        11683/BIDFINMMID: <blank data>
        11684/ASKFINMMID: <blank data>
        3298/BIDXID: NAS(43)
        3297/ASKXID: NAS(43)
        6579/BID_COND_N: R
        6580/ASK_COND_N: R
        293/BID_MMID1: NAS
        296/ASK_MMID1: NAS
        1000/GV1_TEXT: A
        8937/LIMIT_INDQ: BOE(25)
        3887/SEQNUM_QT: 1.2438886E7
        118/PRC_QL_CD:    (0)
        3264/PRC_QL3:    (0)
        8406/QTE_ORIGIN:
        1041/GV1_FLAG:
        12783/NBBO_IND: 1  (2)
        3855/QUOTIM_MS: 60126817
        1025/QUOTIM: 16:42:06:000:000:000
        14238/ORDRECV_MS: 16:42:06:817:000:000
        14246/ORDREC2_MS: <blank data>

 

Once you have successfully completed the steps above, you can further your learning by following the series of ETA tutorials.