How to fetch multiple Symbols data by making one call for EMA?(Ex : Sym1,Sym2,Sym3....)is it corr...

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__Batch0
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.
0 -
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
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 684 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 251 ETA
- 555 WebSocket API
- 37 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 643 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 916 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛