EMAJ: [OmmConsumer batch] Can I dynamiclly change the itemlist during running?
Regarding sample example370__MarketPrice__Batch
consumer = EmaFactory.createOmmConsumer(EmaFactory.createOmmConsumerConfig().host("localhost:14002").username("user"));
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);
Can I change the content of ENAME_BATCH_ITEM_LIST after registerClient()?
Much appreciated for any suggestion!
Best Answer
-
Hello @loy.longyi
If you mean to modify ENAME_BATCH_ITEM_LIST of the batch stream the application has opened (registerClient(..) has called already), based on my test it seems to be impossible. Since batch stream is closed after the batch steam request is sent to the server like the message below:
Item Name: <not set>
Service Name: API_ELEKTRON_EPD_RSSL
Item State: Closed / Ok / None / 'Stream closed for batch'Hence, there is no batch stream to be modified. Then, ADS responds by sending the items as if they were opened individually like the diagram below:
When I tried to modify the batch stream, I got the following error:
Jan 20, 2020 10:34:22 AM com.thomsonreuters.ema.access.BatchItem modify
SEVERE: loggerMsg
ClientName: BatchItem
Severity: Error
Text: Invalid attempt to modify batch stream. Instance name='Consumer_1_1'.
loggerMsgEndIf you want to add new RICs, you have to create a new batch request and call registerClient(..).
0
Answers
-
Hello @loy.longyi
You can not change the subscription RICs on existing item streams as mention by my colleague above.
You can pause-resume, change subscription View and increase-decrease the streams priority on existing streams with "reissue" function only.
2 -
Hello @loy.longyi
For the example of reissue, please look into example301__MarketPrice__PriorityChange
0 -
Batch Stream will be closed automatically after server receives a batch request. Consumer application will receive item response on individual streams. To remove subscription for an item, the application needs to get handle of item stream via OmmConsumerEvent,handle() in onRefreshMsg(), and then use the handle in the OmmConsumer.unregister() method.
public void onRefreshMsg(RefreshMsg refreshMsg, OmmConsumerEvent event)
{
System.out.println("Handle: " + event.handle());
System.out.println("Item Name: " + (refreshMsg.hasName() ? refreshMsg.name() : "<not set>"));Sample output
Handle: 2
Item Name: TRI.N
Service Name: XXX
Item State: Open / Ok / None / 'All is well'
Fid: 1 Name = PROD_PERM DataType: UInt Value: 6562
Fid: 2 Name = RDNDISPLAY DataType: UInt Value: 64
...
Handle: 3
Item Name: IBM.N
Service Name: XXX
Item State: Open / Ok / None / 'All is well'
Fid: 1 Name = PROD_PERM DataType: UInt Value: 62
Fid: 2 Name = RDNDISPLAY DataType: UInt Value: 640 -
Thank you for your reply!
Per ur suggestion, I can create a new batch request and call registerClient(..) to subscribe new RICs, and ignore the ones which I don't need.
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
- 370 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 中文论坛