This section describes how to configure FIX Engine and FIX session.
Table of Contents maxLevel 4
Configuring FIX Engine
The FIX Engine is based on the the FIX Antenna Java library.
FIX Engine's basic settings are stored in the fixenginethe fixengine.properties file, located in the conf the conf directory. Refer to the B2BITS FIX Antenna Java Programmer’s Guide for a complete list of FIX Antenna settings.
The fixengineThe fixengine.properties file contains global B2BITS FIX Antenna settings. A user can specify FIX session default parameters here as well.
The fixedgeThe fixedge.properties file contains settings of the default FIX server port by which the FIX Antenna listens to incoming data.
The currently used default: server.port=8911.
Additional listening ports could be defined within FIX session configurations (see the port
property). In this case, the FIX Engine automatically manages their opening and closing according to started sessions.
...
The custom FIX dictionaries setup in the FIXEdge Java (FEJ) product is based on the FIX Antenna custom FIX dictionaries setup (see see How to set up custom FIX dictionaries), but there is FIXEdge Java configuration specific.
...
Place the customFIXVersions section into the defaultfixengine.properties file located in the confdirectory to set up custom FIX version info for all FIX sessions.
Code Block language yml title fixengine.properties # comma-separated list of custom FIX dictionary aliases customFixVersions=FIX44Custom,FIX50Custom # pair of 'fixVersion' and 'fileName' for each FIX dictionary alias with the pattern: # customFixVersion.<custom FIX version alias>.fixVersion=<base standard FIX version> # customFixVersion.<custom FIX version alias>.fileName=<custom FIX dictionary file name> # example of custom FIX dictionary based on FIX.4.4 customFixVersion.FIX44Custom.fixVersion=FIX.4.4 customFixVersion.FIX44Custom.fileName=classpath:fixdic44-custom.xml # examples of custom FIX dictionary based on FIX.5.0 customFixVersion.FIX50Custom.fixVersion=FIX.5.0 customFixVersion.FIX50Custom.fileName=classpath:fixdic50-custom.xml
Set the defined dictionary aliases as session's fixVersion or appVersion in the appropriate FIXEdge Java session configuration file 's_fix_[SESSION_ID].properties':
Code Block language yml title s_fix_session1.properties # FIXEdge Java session configuration properties fixVersion=FIX44Custom
NOTE: Changes, which are made inCode Block language yml title s_fix_session2.properties # FIXEdge Java session configuration properties fixVersion=FIX50Custom
the fixengine.properties file will beThe value of the default custom version is specified in the DefaultCstmApplVerID <1408> field of the Logon message. Its value is configured in the s_fix_[SESSION_ID].properties file via the appVersion property - the first custom version in the list will be considered the default one and its value will be set for the DefaultCstmApplVerID <1408> field of the Logon message.
Info Please be aware that the value of the default custom version of the FIX protocol should meet the counterparty's requirements. Otherwise, the Logout message will be received and the session connection process will be terminated.
Info |
---|
Changes, which are made in the fixengine.properties file will be applied only after the FIXEdge Java server restart. |
Configuring FIX Session
For establishing and managing FIX sessions, the FIX Antenna Java library is used. FEJ also introduces a per-file base configuration for each FIX session. All such configuration files are placed into subdirectories of the conf/session directory and should follow the s_fix_[SESSION_ID].properties mask (this behavior can be changed with the sessionConfigManager
bean into sysconf/fej-server.xml). Additionally, each subdirectory may have the s_fixDefault.properties configuration file which defines a common option for all groups of the FIX session.
...
- Restart the FIXEdge Java server by using the administrative instruments (all sessions will be initialized in this case)
- Load or reload the session configuration from the FIXICC app (refer to the FIXICC & FEJ Integration User Guide)
NOTE: Changes, which are made in fixengine.properties will be applied to the FIX Engine and sessions only after the FIXEdge server restart.
For monitoring available sessions and their states, use the administrative tools (SSH, JMX), or FIXICC.
FIX session configuration options
...
Property name | Default value | Required for session initiator | Required for session acceptor | Description | ||
---|---|---|---|---|---|---|
sessionType | acceptor | Yes | Yes | Session type. If the type is not defined, then the session will be resolved as an acceptor. Valid values: acceptor/initiator. | ||
host | Yes | The connecting host for the initiator session | ||||
port | Yes | Yes, if SSL is enabled | The connecting port for the initiator session or listening port for the acceptor session. If the port property is defined for the acceptor, the FIXEdge server tries to open this port during the acceptor session start and close during its stop. The FIXEdge server accepts such a session only on the defined port. The same port may be defined for several acceptor sessions. All of these sessions should contain the same value for the 'enableSSL' property. | |||
senderCompID | Yes | Yes | The assigned value is used to identify a firm that sends the message | |||
senderSubID | The assigned value is used to identify a specific message originator (desk, trader, etc.) | |||||
senderLocationID | The assigned value is used to identify a specific message originator’s location (i.e. geographic location and/or desk, trader) | |||||
targetCompID | Yes | Yes | The assigned value used to identify a receiving firm | |||
targetSubID | The assigned value is used to identify a specific individual or a unit intended to receive the message | |||||
targetLocationID | The assigned value is used to identify a specific message destination’s location (i.e. geographic location and/or desk, trader) | |||||
fixVersion | Yes | Yes | A version of the FIX protocol, a version of the transport protocol in case of FIX 5.0-FIXLatest (FIXT1.1), or a custom version (see How to set up custom FIX dictionaries) Valid values: FIX.4.0, FIX.4.1, FIX.4.2, FIX.4.3, FIX.4.4, FIXT.1.1. | |||
appVersion | A version of the application-level protocol or a custom version (see How to set up custom FIX dictionaries) Valid values: FIX.4.0, FIX.4.1, FIX.4.2, FIX.4.3, FIX.4.4, FIX.5.0, FIX.5.0SP1, FIX.5.0SP2, FIXLatest
| |||||
backupHost | Backup host for initiator session | |||||
backupPort | Backup port for initiator session | |||||
incomingSequenceNumber | 0 | An initial incoming sequence number | ||||
outgoingSequenceNumber | 0 | An initial outgoing sequence number | ||||
heartbeatInterval | 30 | Heartbeat interval (in seconds) | ||||
fixFieldList | User-defined fields for messages. If this list is not empty, the Engine adds it to each outgoing message. | |||||
outgoingLoginFixFieldList | Additional fields for the outgoing Logon message | |||||
groups | A comma-separated list of routing groups | |||||
username | The assigned value is used to identify a username to send in the Logon message for the initiator session and a username to validate with the user name from the Logon request for a session acceptor. The session will be accepted if the username is not defined. | |||||
password | The assigned value is used to identify a password to send in the Logon message for the session initiator and the password to validate with the password from the Logon request for the session acceptor. The session will be accepted if the password is not defined. | |||||
disposeOnDisconnect | false | Disposes the FIX session when another side breaks the connection or in case of disconnection. More details about session statuses can be found in the FIX Antenna Java documentation. NOTE: If the property is set to true, then the reconnect logic will be suppressed. | ||||
startOnload | false | Yes | Yes | Whether a FIX session should be started during FIXEdge Java server initialization. | ||
startTime | Yes | Yes | A cron expression that defines a FIX session start time | |||
stopTime | Yes | Yes | A cron expression that defines a FIX session stop time | |||
scheduleTimeZone | Yes | Yes | A time zone for the start and stop times | |||
resetSequenceOnSchedule | false | Yes | Yes | Whether sequences of a FIX session should be reset at the moment, defined by the startTime expression. |
...
Default session settings can be configured in the s_fixDefault.properties file (see details here) located in the same directory as the s_fix<session id>.properties session configuration file.
...
Property | Default value | Description |
---|---|---|
enableSSL | false | Enable secure transport for the session |
keyStorePath | Path to a KeyStore, which contains private keys for a secure connection. One key is to be set per port. | |
keyStorePassword | KeyStore password | |
trustStorePath | Path to a TrustStore. Usually contains a chain of trusted certificates. | |
trustStorePassword | TrustStore password | |
sslKeystoreType | JKS | The type of a KeyStore. See the KeyStore section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard types. Examples of value: JKS, JCEKS, PKCS12, PKCS11 |
sslTruststoreType | JKS | The type of a TrustStore. See the KeyStore section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard types. Examples of value: JKS, JCEKS, PKCS12, PKCS11 |
sslKeystoreKeyAlias | Alias filter for used entities in a KeyStore. The only keys with defined alias will be used for a secure connection if this property is defined. | |
sslTruststoreKeyAlias | Alias filter for used entities in a TrustStore. The only certificates with defined alias will be used for a secure connection if this property is defined. | |
sslProtocol | TLSv1.2 | Preferred SSL protocol. |
acceptedSslServerProtocols | Accepted SSL protocols for connection to the server. This option is used to restrict the SSL protocols to which the initiator can connect. Value type: comma-separated string Examples of value: "TLSv1.2", "TLSv1.1, TLSv1.2" | |
acceptedSslCipherSuites | Accepted SSL cipher suites for connection to the server. | |
keyManagerAlgorithm | SunX509 | Key manager factory algorithm name (see Customizing the Default Key Managers and Trust Managers). Possible values are SunX509, and PKIX. |
keyManagerProvider | Key manager provider. Used to get the KeyManagerFactory instance. | |
trustManagerAlgorithm | SunX509 | Trust manager factory algorithm name (see Customizing the Default Key Managers and Trust Managers). Possible values are SunX509, and PKIX. |
sslServerNeedClientAuth | false | Define if authentication is required for the server-side socket. This option is working only for the acceptor sessions. |
...