Refinery feed handler setup & configuration

rfa processes

The following TRDFD feed handlers are currently available to use as is or for use in cloning additional venue specific instances.

If a new rfa feed handler instance is required, the easiest method to instantiate it is to clone an existing one with similar attributes. You do this by right-clicking an existing process and selecting "duplicate", which will prompt you to name the new process. It is important to note that the _a/b suffix must be included in all process instances names. The naming convention is used by the platform to identify which process is primary/secondary.

Example:

df_tsf_tr_eq_trdfd_rfavelocity_a
df_tsf_tr_eq_trdfd_rfavelocity_b
df_tsf_tr_eqL2_trdfd_rfavelocity_a
df_tsf_tr_eqL2_trdfd_rfavelocity_b

In the Process Instance Editor only the host variable is needed, but it is recommended to define a Taskset for process binding.

Example:

ENV=df_cxj_tr_eq_trdfd_rfavelocity_a_HOST=
ENV=df_cxj_tr_eq_trdfd_rfavelocity_a_PORT=
ENV=df_cxj_tr_eq_trdfd_rfavelocity_a_TASKSET=

To define the values for these variables, you must modify the delta.instances.profile. Optionally you can configure a static string value for Host, Port, and Taskset directly in the Process Instance Editor rather than modifying the “delta.instances.profile”. It is not necessary to specify a port for the feed handler instances as they are not native q processes:

export df_cxj_tr_eq_trdfd_rfavelocity_a_HOST="c891vkjtrvaxd.int.thomsonreuters.com"
export df_cxj_tr_eq_trdfd_rfavelocity_a_PORT=""
export df_cxj_tr_eq_trdfd_rfavelocity_a_TASKSET="0-3"

Before these new variables can be used, you must first restart Delta Control. You can do this by using the stop/start commands in delta-bin/bin:

After restarting Delta Control, you can check variable assignment by using the following query against the gateway in the IDE:

.utils.checkForEnvVar "ENV=emea_tr_fut_trdfd_rfavelocity_a_HOST="

RFA configs

Before running the new feed handler instance/s, you will first need to create the necessary configs:

  • deltacontrol

  • kdbpublisher

  • kdbsubscriber

  • rfa

  • rfaconfig

  • rfasubscription

  • timeval

A config for each of the above should exist with the same name as that of the process name of the new feed handler instance. To create these configs, the easiest method is to duplicate an existing config with similar attributes.

a) deltacontrol

The Delta Control configs contain the login and host details for Delta Control; typically these can remain as seen above.

b) kdbpublisher

In the kdbpublisher config it is important to check the schema-filename has the correct asset class.

AssetClass MarketLevel Schema
Equity L1, L2, LL2 rfavTREqSchema.xml
FixedIncome L1 rfavTRFiSchema.xml
Futures L1, L2, LL2 rfavTRFutSchema.xml
Forex L1 rfavTRFxSchema.xml
Indices L1 rfavTRIdxSchema.xml
MoneyMarkets L1 rfavTRMnSchema.xml
ListedOptions L1 rfavTRLisOptSchema.xml

c) kdbsubscriber

The kdbsubscriber config contains the tables to subscribe to and the "subscription-channels" are the channels that the feed will publish the tables data on. Ensure that these are correctly configured for the asset class of you feed handler instance.

Asset class Market level subscription-channels
Equity L1 emea_tr_eq
Equity L2 emea_tr_eql2
Equity LL2 emea_tr_eql2legacy
Fixed Income L1 emea_tr_fi
Futures L1 emea_tr_fut
Futures L2 emea_tr_futl2
Futures LL2 emea_tr_futl2legacy
Forex L1 emea_tr_fx
Indices L1 emea_tr_idx
Money Markets L1 emea_tr_mn
Listed Options L1 emea_tr_lisOpt

d) rfa

You can set the RFA environment variables "RFA_SERVICE_NAME_A and RFA_USER_NAME_A" during installation via the "install.config" and/or added to the ".delta.profile" post install. Additionally, the service-name, session-name and user-name can be explicitly provided if different values are needed for the trdfd feeds.

In addition to configuring the rfa environment variables, you must also be sure to configure the correct "fieldmap-filename".

Source Asset class Market level subscription-channels
Elektron Equity L1 eqfieldmap.txt
Elektron Equity L2 eqL2fieldmap.txt
Elektron Equity LL2 LL2fieldmap.txt
Elektron Fixed Income L1 fifieldmap.txt
Elektron Futures L1 futfieldmap.txt
Elektron Futures L2 futL2fieldmap.txt
Elektron Futures LL2 LL2fieldmap.txt
Elektron Forex L1 fxfieldmap.txt
Elektron Indices L1 idxfieldmap.txt
Elektron Money Markets L1 mnL2fieldmap.txt
Elektron Listed Options L1 lisOptfieldmap.txt
TRDFD Equity L1 eqtrdfdfieldmap.txt
TRDFD Equity L2 eqtrdfdL2fieldmap.txt
TRDFD Equity LL2 LL2trdfdfieldmap.txt
TRDFD Fixed Income L1 fitrdfdfieldmap.txt
TRDFD Futures L1 futtrdfdfieldmap.txt
TRDFD Futures L2 futtrdfdL2fieldmap.txt
TRDFD Futures LL2 LL2trdfdfieldmap.txt
TRDFD Forex L1 fxtrdfdfieldmap.txt
TRDFD Indices L1 idxtrdfdfieldmap.txt
TRDFD Money Markets L1 mntrdfdfieldmap.txt

e) rfaconfig

This config can be used to override values in the config-filename given in the rfa config (see d) above). If not overridden, the values will be taken from the config-filename listed.

A list of connections can be provided by removing the rsslPort and hostname and instead using \Connections\Connection_RSSL\serverList, example value "host1:14001, host2:14002"

f) rfasubscription

This config contains the list of instruments that the feed subscribes to.

g) timeval

This config can be used to create an offset for the publish time using the format UTC+9, for example.

Workflows

Any new feed can now be added to the workflows. Looking at the eq workflow as an example:

The new rfa process can be added by right-clicking on the rdb process and selecting Add New Task, scroll through the process list and select the needed rfa:

This will create a task for the process and add it to the workflow:

Repeat this step for each workflow/rfa that's needed. Once the workflows have been updated and saved, you can then start all processes by running the START_EMEA workflow.

Checks

a) Logfiles

You can check the logfiles for the new feeds in delta-data/DeltaControlData/logdir to ensure that they are starting up and running ok. The logfile should update with stats like below showing the count of messages being sent for each table:

b) getTicks call

You can check that the system is now receiving the data by running a getTicks call for the expected syms on an IDE.