How to fetch multiple Symbols data by making one call for EMA?(Ex : Sym1,Sym2,Sym3....)is it correct
Best Answer
-
Hello @priyanka.mundargi
An EMA consumer application can request multiple items using a single request called a batch
request. After the consumer sends an batch request to the
ADS, the ADS responds by sending the items as if they were opened individually
so the items can be managed individually as shown in the figure below:Hence, your EMA application just once calls OmmConsumer.registerClient(..) specifying array of multiple Symbols.
A snipped
source code in EMA Java:ElementList batch = EmaFactory.createElementList();
OmmArray array = EmaFactory.createOmmArray();
array.add(EmaFactory.createOmmArrayEntry().ascii("TRI.N"));
array.add(EmaFactory.createOmmArrayEntry().ascii("IBM.N"));
batch.add(EmaFactory.createElementEntry().array(EmaRdm.ENAME_BATCH_ITEM_LIST,
array));
consumer.registerClient(EmaFactory.createReqMsg().serviceName("DIRECT_FEED").payload(batch),
appClient);For the complete application source code shipped with Elektron Java SDK package, it is <Elektron Java SDK
package>\Ema\Src\examples\java\com\thomsonreuters\ema\examples\training\consumer\series300\example370__MarketPrice__Batch.A snipped
source code in EMA C++:UInt64 handle = consumer.registerClient( ReqMsg().serviceName( "DIRECT_FEED" ).payload( ElementList().addArray( ENAME_BATCH_ITEM_LIST, OmmArray().addAscii( "TRI.N" ).addAscii( "IBM.N" ).complete() ).complete() ), client );
For the complete application source code shipped with Elektron C++ SDK package, it is
<Elektron C++ SDK
package>\Ema\Examples\Training\Consumer\300_Series_Examples\370__MarketPrice__Batch1
Answers
-
@priyanka.mundargi, EMA doesn't support that comma separated items because OMMConsumer threats a name value of a ReqMsg object as an individual single item. So, you should use a loop to help explicitly iterate calling the registerClient() method for each item.
For example:
// Single item call
ReqMsg reqMsg = EmaFactory.createReqMsg();
consumer.registerClient(reqMsg.domainType(EmaRdm.MMT_MARKET_PRICE).serviceName("DIRECT_FEED").name("JPY="), client);
// Multiple items call
String[] items = {"JPY=", "THB=", "EUR="};
ReqMsg reqMsg = EmaFactory.createReqMsg();
for (String item:items) {
consumer.registerClient(reqMsg.clear().reqMsg.domainType(EmaRdm.MMT_MARKET_PRICE).serviceName("DIRECT_FEED").name(item), client);
}Hope this helps.
1 -
Am getting below in logs "state="Closed / Suspect / None / 'Login stream was closed.'
What if i need continous data?
0 -
Hello @priyanka.mundargi
What EMA edition that you are using? Is it C++ or Java?
Did the log above was shown after the application received data?
0 -
Yes. that is right.
0 -
Why are we reading Symbol as Ascii?is it always ascii?using array.add(EmaFactory.createOmmArrayEntry().ascii("TRI.N"));
0 -
Hello @priyanka.mundargi
The "state="Closed / Suspect / None / 'Login
stream was closed.' is shown when consumer.uninitialize(); is called after 60,000 milliseconds/60 seconds. According to the EMA Java example source code in example370__MarketPrice__Batch:consumer.uninitialize() is to close the login stream(log out) that's why you see this state.
To continue receiving data, just change 60000 millisecond in
Thread.sleep(60000); to be your favorite time.0 -
Hello @priyanka.mundargi
If you have a new question, please post it to be a new one in the
https://community.developers.refinitiv.com/questions/ask.html
This will allow everyone can see your question obviously and can post the answer to help you.
0 -
Hello @priyanka.mundargi
This is the specification of batch request that the ItemList must be an array of ASCII as shown in <Elektron Java SDK package>\Ema\Docs\EMAJ_RDMUsageGuide.pdf at section A.2 ItemList:
0
Categories
- All Categories
- 6 AHS
- 39 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
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛