Dictionary usage in IProvider

we are writing Interactive Provider in java. We have questions about dictionary:
- Is ChannelDictionary applicable to the provider or only to the consumer?
if it is applicable to the provider, how the config should work so that the dictionary will be downloaded by the provider from ADS?
<DictionaryType value="DictionaryType::ChannelDictionary"/>
2. In version 3.7 DirectoryGroup/DirectoryList/Directory/Service/InfoFilter/DictionariesProvided was not needed and NO dictionary file is loaded at startup.
a) does it mean that no dictionary is used by such provider?
3. in latest version 3.9.0.1, DictionariesProvided is required. And it forces us to have Dictionary files available locally (see below our config) - otherwise provider will fail to start
a) is there a way to disable the mandate of dictionary presence?
b) what exactly is this dictionary used for by the provider?
<DirectoryGroup> … <DictionariesProvided> <DictionariesProvidedEntry value=“ABC”/> </DictionariesProvided> … </DirectoryGroup> …. <DictionaryGroup> <DictionaryList> <Dictionary> <Name value=“ABC”/> <DictionaryType value="DictionaryType::FileDictionary"/> <RdmFieldDictionaryFileName value="./RDMFieldDictionary"/> <EnumTypeDefFileName value="./enumtype.def"/> </Dictionary> </DictionaryList> </DictionaryGroup>
thanks
Michal
Answers
-
Thank you for reaching out to us.
I tested it and found that the iprovider.series300.ex350_Dictionary_Streaming example demonstrate how to download data dictionary files from RTDS (ADH or ADS POP).
Regarding the DictionariesProvided, you can call the adminControlDictionary method to handle the dictionary domain.
provider = EmaFactory.createOmmProvider(EmaFactory.createOmmIProviderConfig().adminControlDictionary(OmmIProviderConfig.AdminControl.USER_CONTROL), appClient );
The full example is in the ex332_Dictionary_UserControl.
0 -
hello @Jirapongse , thanks for the reply.
I have run your mentioned example (Dictionary_Streaming) from master. it fails to start (just like on my side) because it tries to load dictionary.
Exception Type='OmmInvalidUsageException', Text='loggerMsg ClientName: DictionaryHandler Severity: Error Text: DictionaryHandler.loadDictionaryFromFile() failed while initializing DictionaryHandler. Unable to load RDMFieldDictionary file named ./RDMFieldDictionary Error Text: Can't open file: ./RDMFieldDictionary Instance Name EmaIProvider_1 loggerMsgEnd ', Error Code='-1' at com.refinitiv.ema.access.OmmServerBaseImpl.ommIUExcept(OmmServerBaseImpl.java:1053) at com.refinitiv.ema.access.DictionaryHandler.loadDictionaryFromFile(DictionaryHandler.java:191) at com.refinitiv.ema.access.DictionaryHandler.initialize(DictionaryHandler.java:130) at com.refinitiv.ema.access.OmmServerBaseImpl.initialize(OmmServerBaseImpl.java:283) at com.refinitiv.ema.access.OmmIProviderImpl.<init>(OmmIProviderImpl.java:77) at com.refinitiv.ema.access.EmaFactory.createOmmProvider(EmaFactory.java:549) at com.refinitiv.ema.examples.training.iprovider.series300.ex350_Dictionary_Streaming.IProvider.main(IProvider.java:199)
only if I set below then IProvider starts successfully (probably it stops caring about dictionary entirely?)
.adminControlDictionary(OmmIProviderConfig.AdminControl.USER_CONTROL)
could you also reply to my original questions?
- Is ChannelDictionary applicable to the provider or only to the consumer?
- is the dictionary requirement changed between version 3.7 and 3.9?
- what exactly can be the usage of the dictionary at the provider side?
- I see it could be streamed back to the requestor (like in user control example)
- where else it is being used? does the framework validate the message submitted by the provider?
thanks
Michal
0 -
- I tested it and the ChannelDictionary configuration doesn't work with the IProvider.
- According to the error, yes, it changed.
- Dictionary is used to decode data. The data sent to the network only contains the field identifier and data. The dictionary is used to get its field name and data type. Both providers and consumers must use the same version of dictionary. The provider should be able to provide dictionary to consumers if consumers request for dictionary.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 48 Data Fusion
- 34 Data Model Discovery
- 689 Datastream
- 1.4K DSS
- 627 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 24 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 278 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 706 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
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛