How the batch requests are to be implemented
It is mentioned that batch request details are provided in the Reuters Elektron EMA Developer Guide, however, this information cannot be found in the Dev Guide.
To provide some context, When a request for market data from a downstream clearing systems is received, our requirement is to request for prices for around 8000 instruments via a single batch request from a Reuters domain. Need to identify if this is possible and if so how it can be done.
Best Answer
-
Hi Tharinda,
A Batch Request example is included in the EMA dev kit package
e.g. 370__MarketPrice__Batch for EMA C++
and example370__MarketPrice__Batch for EMA Java
Both can be found in the 300 Series Examples folder.
Essentially you need to create and populate and OMMArray with the RIC codes. You then add the OMMArray to an Elementlist as part of the ReqMsg payload.
For example:
int main(int argc, char* argv[])
{
try {
AppClient client;
OmmConsumer consumer( OmmConsumerConfig().username("davec") );
ifstream ricFile("ftse100.txt");
string ricCode;
OmmArray ricArray;
// read RICS from file into Array
if (ricFile.is_open())
{
while (getline(ricFile, ricCode))
ricArray.addAscii(ricCode.c_str());
ricArray.complete();
ricFile.close();
}
// Encode array into ReqMsg
UInt64 handle = consumer.registerClient( ReqMsg()
.serviceName( "IDN_SELECTFEED" )
.payload( ElementList().addArray( ":ItemList",
ricArray ).complete() ), client );
sleep( 10000 );
}
catch ( const OmmException& excp ) {
cout << excp << endl;
}
return 0;
}In the C++ code snippet above, I am reading RIC codes from a file and then using them to make a batch request.
Please note that I have only tried 100 RICs - so not sure of the impact (if any) of requesting 8000 instruments in a single batch - e.g. on your ADS server during busy periods.1
Answers
-
The batch request mechanism is an odd anachronism in RSSL, it can assist with abstractions such as requesting a set of instruments but yields no benefit technically as the request process is slower and each response is still returned individually. EMA today creates an individual request on the wire for each instrument, in the future it may support native batching which means each individual request will be appended to a single message and then forwarded. Each response no matter the underlying request mechanism is still presented individually.
The way forward for improving the request-response round trip time is to use enhanced symbol lists such that a single instrument request in a single message can return many responses. However this requires that the symbol list exists or is prepared before hand and aggregated with Elektron in TREP. Even then not all providers may support the "enhanced" concept of sending all the symbol list constituents from the single request but due to logic in the consuming API this process will be driven by the API instead, reducing the complexity for the developer but ultimately not reducing round trip time.
There is no mechanism to present multiple responses in a single message unless an additional bespoke infrastructure layer is implemented to explicitly do this.
1 -
Regarding the location within the EMA documentation, the batch request details are outlined within the Concepts Guide. In addition, if you search within the documentation books, it will pull up references in a few locations, including those mentioned regarding 300 Series Examples folder.
Can you provide where it mentions the batch details are provided in the Reuters Elektron EMA Developer Guide? We can follow up with the development team to further clarify..
1 -
Please
be informed that a reply has been verified as correct in answering the
question, and has been marked as such.Thanks,
AHS0
Categories
- All Categories
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛