ChannelDictionary vs FileDictionary, which one should I use

Currently we are using Real-Time SDK's C# version. Our program uses an EmaConfig.xml file as demonstrated in some sample programs. I am aware of this section in the file:
<DictionaryList> <Dictionary> <Name value="Dictionary_1"/> <!-- dictionaryType is optional: defaulted to ChannelDictionary" --> <!-- possible values: ChannelDictionary, FileDictionary --> <!-- if dictionaryType is set to ChannelDictionary, file names are ignored --> <DictionaryType value="DictionaryType::ChannelDictionary"/> </Dictionary> <Dictionary> <Name value="Dictionary_2"/> <DictionaryType value="DictionaryType::FileDictionary"/> <!-- dictionary names are optional: defaulted to RDMFieldDictionary and enumtype.def --> <RdmFieldDictionaryFileName value="./Configs/Refinitiv/RDMFieldDictionary"/> <EnumTypeDefFileName value="./Configs/Refinitiv/enumtype.def"/> </Dictionary> </DictionaryList>
Currently the consumers defined in EmaConfig.xml file all use Dictionary_2
, i.e., a DictionaryType::FileDictionary
. It causes a minor inconvenience to use, as you see we need to specify RdmFieldDictionaryFileName
and EnumTypeDefFileName
, which are paths relative to current working directory. It means if we start the program using absolute path, i.e., current working directory is not set, the program won't work.
We want to solve this issue. Could you let me know whether switching to Dictionary_1
, that is. the "ChannelDictionary", can solve this issue. It sounds to me that "FileDictionary" means we use the local version and "ChannelDictionary" means each time we fetch the dictionary from server. Is this understanding correct?
Best Answer
-
Hello @Y_Intercept,
Yes, your understanding is correct. The field dictionaries are modified over time and new fields get added; so its always recommended to get the dictionary from the server when the application starts. By doing this any new fields which get added over time, won't cause an exception condition in your application.
Only time when field dictionary should be loaded from a local file is when custom (user defined) fields are being used within an application. This is mostly the case with apps which publish or consume locally published data.
1
Answers
-
You can specify absolute paths in the configuration file. For example:
<Dictionary> <Name value="Dictionary_2"/> <DictionaryType value="DictionaryType::FileDictionary"/> <!-- dictionary names are optional: defaulted to RDMFieldDictionary and enumtype.def --> <RdmFieldDictionaryFileName value="C:\D_DRIVE\temp\RTSDK-2.2.3.L1.CSharp.rrg\RTSDK-2.2.3.L1.CSharp.rrg\CSharp\etc\RDMFieldDictionary"/> <EnumTypeDefFileName value="C:\D_DRIVE\temp\RTSDK-2.2.3.L1.CSharp.rrg\RTSDK-2.2.3.L1.CSharp.rrg\CSharp\etc\enumtype.def"/> </Dictionary>
0 -
@Jirapongse as of now our practice is add this
EmaConfig.xml
as a static file to git and it gets deployed to server as a part of CI/CD. It has version number in path so we would need to make Ci/CD more complicated (i.e., string replacement) to make this work. But anyways, as @Gurpreet said ChannelDictionary is almost always a better option.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
- 685 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
- 252 ETA
- 556 WebSocket API
- 38 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
- 652 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
- 917 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 中文论坛