ETA Quick Start
|Last update||May 2018|
|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
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: 22.214.171.124 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.