Omm - onAckMsg - Ric Code identifer in exception
Recently we experienced that TR didn't create ric code which we requested.
Because of this Index price which we were contributing thru EMA api was not acknowledged by Reuters and we were getting below exception in our log file.
The reject message looks like:
AckMsg
streamId="5"
domain="MarketPrice Domain"
ackId="63"
nackCode="DeniedBySource"
text="RIC has been disabled"
AckMsgEnd
Below is the implementation for above acknowledgement display.
public void onAckMsg(AckMsg ackMsg, OmmConsumerEvent consumerEvent) {
System.out.println("----- Ack message ----");
System.out.println(ackMsg);
System.out.println("Continue posting..."+"from "+name_);
}
Above exception doesn't have ric code identifier for which price submission failed. Can you pl let us know how we can capture ric code for which we are getting above exception? This is very important for us to know for which ric code price contribution failed.
Best Answer
-
It requires some programming logic to be implemented at the application level e.g. when you submit a post, you can store the PostID in the application level object that represents the RIC that you are posting for.
When you get the AckMsg, you can extract the AckId and do a lookup against your application-level object's PostID to determine which RIC the Ack relates to.
Alternatively, if you are using On-Stream posting - then you can use the Closure technique that my colleague Jirapongse described above.
0
Answers
-
Hello @mahesh.ankulkar
RIC in the Ack Message can be got from AckMsg.name() as an example snipped source code below:
if ( ackMsg.hasMsgKey() ) System.out.println("Item Name: " + ( ackMsg.hasName() ? ackMsg.name() : "not set" ));
If the RIC is not in the Ack Message, the application can map Id(askId in ack message and postId in the post message) back to the RIC.
For example:
The example source code when the application sends a post message with postId 63 and the RIC is TRI.N:
((OmmConsumer)event.closure()).submit( postMsg.postId( 63 ).serviceId( 267 ).name( "TRI.N" ).solicitAck( true ).complete(true).payload(nestedRefreshMsg), event.handle() );
When the application receives an ack message with ackId 63:
AckMsg
streamId="1"
domain="MarketPrice Domain"
ackId="63"
nackCode="DeniedBySource"
text="[500]: Unknown Item"
serviceId="267"
AckMsgEndIt means this ask message is for RIC TRI.N(The RIC is in post message which the same Id as the ask message).
Hope this help.
0 -
Using AckID to map to PostID is useful when you need to verify which post message has been failed. Therefore, you can verify the content and attributes of that post message.
From the NAK message, you are using on-stream posting. If you need to know a RIC associated with that event, you can use OmmConsumerEvent.handle() which returns a unique item identifier (a.k.a., item handle) associated by EMA with an open item stream. However, the application needs to maintain the mapping of item handles to RIC names.
Moreover, if you call OMMConsumer.registerClient to open a single item stream (not batch). You can specify a closure object which contains an item name.
registerClient(ReqMsg reqMsg, OmmConsumerClient client, java.lang.Object closure)
Then, in the onAckMsg callback, you can get the closure object by calling the OmmConsumerEvent.closure() method to get an item name.
0 -
Thanks Pimchaya/Jirapongse
Yup noticed use of postid/ ackid but as this is asynchronous we will need to find ric code in log file for given postid. If acknowledgement returns ric code then this will be bit easy.
If not then we will need to first identify ackid which is failing then find ric code for this ackid.
We want to implement alerting in place to notify if submission failed because of missing Ric at reuters end.
Apologies if I am missing something.
0
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 中文论坛