Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Force Sequence Number Reset Mode

In the Force Sequence Number Reset mode, the FIXEdge will reset outgoing and incoming sequence number on every time on logon and force the counterparty to do the same via sending the tag ResetSeqNumFlag (141)  = Y in Logon message.

The configuration property ForceSeqNumReset is used to set the mode. The following values can be applied for the property:

  • Value ‘0’ or ‘false’ – mode is off, do not use tag ResetSeqNumFlag (141)

  • Value ‘1’ or ‘true’ – Enable SeqNumreset at first time of session initiation

  • Value ‘2’ – reset sequence number at every logon

This mode is used to resolve ‘sequence number is too low’ problem. It usually occurs as a result of applying the Intraday Logout Tolerance mode only by one of counterparty or after ‘non-graceful' session termination log-files are cleared on the one side and kept on the other side.

Note: This is not a recommended way since messages sent during inactivity time will be lost. Also it is recommended to make sure that other counterparty supports this functionality before relying on it.

The matrix of different combinations

ForceSeqNumReset012
IntradayLogoutTolerance
true

FIXEdge will always use the same set of logs and will never reset sequence numbers.
Afterlogscleanup FIXEdge will send Logon with SeqNum=1 and without ResetSeqNum flag.

Note

This is the most safe combination, but you have to make sure that your counterparties don’t reset sequence numbers on their side. Otherwise, they will send you confirming Logon with SeqNum=1 and FIXEdge will terminate the session.

FIXEdge will send only first Logon with ResetSeqNum flag (141=Y), after that it will always use the same set of logs and will reset sequence numbers only after logs cleanup.

Info
iconfalse

Whether this is the first Logon or not, is defined by presence of logs in log directory.

FIXEdge will always send Logon with ResetSeqNum flag (141=Y).
IntradayLogoutTolerance doesn’t work for this case,new set of logs will be created after each Logout.

false

FIXEdge will create new set of logs after Logout.
Next Logon will be sent with SeqNum=1 and without ResetSeqNum flag.

FIXEdge will create new set of logs after Logout.
Next Logon will be sent with SeqNum=1 and with ResetSeqNum flag (141=Y).

Each Logon will be sent with SeqNum=1 and with ResetSeqNum flag (141=Y).

Other Cases of Sequence Number Handling

The property ResetSeqNumAtScheduledStartTime can be used for sequence number resetting when session starts by scheduler. It is useful on case when session starts every day by some timetable and its sequence numbers restores from the session log.

The property ResetSeqNumAfter24hourscan be used for sequence number resetting after each 24 hour period  via sending the tag ResetSeqNumFlag (141)  = Y in Logon message.

Heartbeat and Test Request Messages

During periods of message inactivity, counterparties have to generate the Heartbeat messages at a regular pre-defined time interval (Heartbeat Interval). The recipient also has to generate the Heartbeat message in response.

The heartbeat interval is declared by the Initiator using the HeartBtInt (108) tag in the Logon message. If HeartBtInt tag is set to zero then no regular Heartbeat messages will be generated.

When either counterparty has not received any messages for some period of inactivity (heartbeat interval + delta (reasonable transmission time)), it has to generate a Test Request message. The other counterparty has to send Heartbeat message in response to the Test Request message.

In this manner, counterparties regularly are checking sequence numbers or communication line status:

  • When a gap in sequence numbers is detected, the counterparty initiates standard message recovery process.
  • It is considered that FIX Connection is lost (state "Telecommunication link failed") when response Heartbeat message is not received after the heartbeat interval plus delta.

Figure ... Heartbeats and Test requests 

Standard Message Recovery Process

When the gap in sequence numbers is detected the each counterparty can initiate a request for message retransmission - Resend Request message. The counterparty can request a single message or range of missed messages: BeginSeqNo (7) and EndSeqNo (16) tags are used.

In response to the Resend Request message the other counterparty retransmits the application messages or sends the Sequence Reset messages. The Sequence Reset message (in ‘Gap Fill’ mode) is used when sender wants to skip some messages for the following reasons: when missed messages were application messages and became obsolete or when missed messages were just session messages.

Figure ... Message recovery 

The properties OutgoingMessagesStorageSize and ResendMessagesBlockSize are used for limiting the number of requested and sent messages.

Logging Storage Type

According to the FIXprotocol session is responsible for outgoing message flow. This means that any time counterparty may request retransmission of the previously sent messages. Therefore, the session must store all sent messages to some storage.

Moreover, to successful restore the session after failure the following logs of data have to be stored:

  • Session parameters (SenderCompID, TargetCompID, FIX version, etc.)
  • Session incoming and outgoing sequence numbers.
  • Incomming messages. Incoming message is stored to the log after the business layer processes it (optional). 
  • Outgoing messages. Outgoing message is stored to the log before sending. 

Incoming messages are stored in files with the ‘.in’ extension. Outgoing messages are stored in files with the ‘.out’ extension.

There are the following modes of storage that can be defined for the FIX session:

TypeDescription

Persistent

In case of persistent session, the logs are stored to the files. This guarantees that session can recover its state (sent messages and latest sequence numbers) after connection failure but it decreases the performance.  

PersistentMM

In this case all related information is stored to the persistent memory mapped files.

SplitPersistent

Like persistent session, in this case the information is stored to the log-files but there is a log-file size limitation. When log-file size exceeds the limit then new log-file will be created. At the same time, the previous log-files become available to change or delete because the FIXEdge does not lock them. So, it is possible to recover the session state and to re-transmit of the previously sent messages from old log-files if these files have not been changed. 

Transient

Transient session stores all related information in memory.  This means that this type of session has greater throughput and lower latency. However, such session cannot be restored after failure, and hence message loss is possible.

This session type is recommended when recovery after failure is not required, i.e. when every time session is connected from scratch. This applicable for market data sessions, when client has to subscribe and request snapshot on every logon and hence recovery is not required. Another variant is when persistent already exists in application so having yet another storage of recovery information is redundant. In the latter case the application is responsible to restore session state after creation and before connect.

Null

No storage is used. This means that incoming and outgoing messages are not stored.

This session type is recommended when messages resend, recovery after failure and logging are not required.

The mode of storage is defined by the different properties FixLayer.FixEngine.Session.Session_Name.StorageType and UnregisteredAcceptor.SessionStorageType, for registered and unregistered sessions correspondingly. Refer also to part ‘Logging and Backup Settings’ for more details.

Encryption

The exchange of sensitive data across public carrier networks may make it advisable to employ data encryption techniques to mask the application messages. FIXEdge can perform message encryption in the session by means of several cryptographic technologies: PGP, PEM, PKCS, DES or DES-MD5.

The choice of encryption method is determined by mutual agreement of the two counterparties of FIX session.

The required encryption method is defined in the session parameter EncryptMethod. FIXEdge requires GNU Privacy Guard command-line utility to use encryption. Others settings of encryption are set in special configuration file

Note: Problems in use of encryption may occur in case of separated configuration of sessions that will be connected subsequently (i.e. when the related sessions have different encription methods). In this case a session will be started, but errors will be logged during the action of message sending. The server does not decrypt the encrypted messages on the business layer, so only unencrypted tags (such as TargetCompID, SenderCompID, etc.) could be used for routing purposes.

Usage the SSL is an alternative to encryption of FIX messages. In caseSSL, the protection will be spread to the whole connection, and encryption of messages is not required.

Common Settings of Sessions

This part contains list of commonproperties and their detailed description related to registered and unregistered sessions. These properties are stored in both configuration files 'FIXEdge.properties' and 'engine.properties'.

Business Rules parameters

BusinessLayer.RoutingRules

Mandatory.PathtoBusiness Layer routing rules configuration file in XML format.

Default value: BusinessLayer.RoutingRules = FIXEdge1/conf/BL_Config.xml

BusinessLayer.JS.ExecuteInParallel

Optional.Upperlimit of JS scripts that can be executed in parallel. Each parallel executed script requires separate JS environment. Set positive number or "auto".

Defaultvalueisauto.

Configuration File FIXEdge.properties

The file FIXEdge.properties’ contains four common properties that describe registered sessions, see below:

FixLayer.FixEngine.Sessions

Mandatory. Contains a comma separatedlistofseparated list of names of FIX Sessions registered in the FIXEdge

Example: FixLayer.FixEngine.Sessions = TestFIXAcceptor, TestFIXInitiator

Default value: FixLayer.FixEngine.Sessions = TestFIXAcceptor - this session is defined in installation procedure 

FixLayer.FixEngine.Sessions.ArchivePath

Optional. Defines the path to move log files after the session is closed.

Note: directory must exist otherwise the backup procedure will fail.

Attention: it should't point to path from BackupDirectory (defined in engine.properties), otherwise error message will occur on session start, and session won't start

Default value: FixLayer.FixEngine.Sessions.ArchivePath = FixEdge1/log/archive

Configuration File Engine.properties

Backup Settings

HiddenLogonCredentials

Optional. Provides an option to mask password in in/out log files.

Valid values: "true" | "false"

Default value: HiddenLogonCredentials = false

LogDirectory

Mandatory. Defines the path of the directory in which the logs for all incoming (if LogIncomingMessages is set to 'true') and outgoing FIX messages are stored. A path is specified relative to the EngineRoot directory.

Default value: LogDirectory = FixEdge1/log

LogIncomingMessages

Mandatory. Provides an option to log incoming FIX messages (those received) from a counterparty FIXEdge.Log-file will be stored in the directory specified by the LogDirectory property in a file with extension "in".

Valid values: "true" | "false"

Default value: LogIncomingMessages = true

TotalOutgoingStorageMemoryLimit

Mandatory. Defines total amount of the memory (in MB) that active session may use. If the limit is exceeded then the sessions will be closed ‘non-gracefully’.

Valid values: The valuemustbeinteger and not negative. The value “0’ means that allocated memory is unlimited.

Default value: TotalOutgoingStorageMemoryLimit = 0

EnableIncrementalLogFileCreation

Mandatory. Defines whether the size of disc space for session logging must be reserved to 10Mb.

Valid values: "true" | "false". The value ‘true’ means that the 10 Mb of disc space will be reserved for logging.Iflog-files reaches 10Mbs, another 10Mbs will be reserved and so on.

Note: If set to ‘true’ the FIXEdge performance is greatly increased.

Default value: EnableIncrementalLogFileCreation = false

BackupDirectory

Mandatory. Defines a relative path to the backup folder. This folder will be used for message storage files of the backup connections.

Default value: BackupDirectory = FixEdge1/log/backup

Backup Connection

Optional. Provides an option to switch from an active session to a backup one on a predefined backup port / host. Backup session has its own configuration settings, yet not every option is supported for Backup connection (for example UsernameTag and PasswordTag).

Example:

FixLayer.FixEngine.Session.Session_Name.Backup.Host = XXXX
FixLayer.FixEngine.Session.Session_Name.Backup.Port = YYYY

Note

Note: if the primary connection is a SSL connection, then backup connection will use the same SSL parameters (certificate, protocols) as the primary connection.

Logging Settings

Detailed information about Logging parameters is available here: FIX Engine parameters#Loggingparameters

Integrity Control Settings

LogonTimeFrame

Mandatory. Defines the time period (in seconds) after which a session is ‘non-gracefully terminated’ when confirming Logon message is not received to a Logon message. The corresponding Logout message must be sent to the counterparty. (Q7)

Valid values: The value must be integer and not negative. The recommended value is 30 seconds for dedicated connections or private networks. Trading connections via the internet will require calibration. If it is set to "0", then the time period is unlimited.

Default value: LogonTimeFrame = 10

LogoutTimeFrame

Mandatory. Defines the time period (in seconds) after which a session is automatically terminated when confirming Logout message is not received to a Logout message.

Valid values: The value must be integer and greater then 0. The recommended value is 10 seconds for dedicated connections or private networks. Trading connections via the internet will require calibration.

Default value: LogoutTimeFrame = 10

IntradayLogoutTolerance

Mandatory. Defines whether the Intraday Logout Tolerance Mode will be used. The property is applied to all of the sessions which have not possessed the own parameter IntradayLogoutTolerance. TBD

Valid values: "true" | "false"

Default value: IntradayLogoutTolerance = false

ReasonableTransmissionTime

Mandatory. This parameter specifies the delta (additional time) to the heartbeat interval that FIXEdge has to wait before sending Test Request message or will wait a Heartbeat message in response to Test Request message. Refer to part 'HeartBeat and Test Request messages' for more information.

The parameter is specified in a percentage of Heartbeat Interval (Heartbeat Interval/100). The recommended value is twenty percent.

Default value: ReasonableTransmissionTime = 20

ForceSeqNumReset

Mandatory. Defines using of the Force Sequence Number Reset Mode for all sessions by default. Used when parameter ForseSeqNumReset is not set for particular session

Valid values: "0" or "false" | "1" or "true" | "2"

Default value: ForceSeqNumReset = false

ResetSeqNumAfter24hours

Optional. Defines whether FIXEdge senda Logon message with the ResetSeqNumFlag (141) tag after each 24 hour period of session's activity to establish a new set of sequence numbers (starting with 1).

Valid values: "true" | "false"

Note: This option does not affect sessions which use version 4.0 of the FIX protocol.

Default value: ResetSeqNumAfter24hours = false

DuplicateResendRequestLimit

Mandatory. Defines how much the same Resend Request messages received before Application::onResendRequestLoop is called.

Valid values: The value mus tbe integer and not less than 0. This option is disabled if value is less than 2.

Default value: DuplicateResendRequestLimit = 0

Settings of Session Reconnection

Reconnect.MaxTries

Mandatory. Defines the number of attempts to restore the session (see also ForceReconnect). The session is considered as restored if the telecommunication link is restored and the exchange of Logon messages is successful.

Valid values: 0, 1, 2, ...  The value "-1" means that the number of attempts is unlimited.

Default Value: Reconnect.MaxTries = 5

Reconnect.Interval

Mandatory. Defines the time interval (in milliseconds) between reconnection attempts in order to restore a communications link.

Valid values: The value must be integer and greater than 0. The recommended value is 1000 for dedicated connections and private networks. Internet connections require calibration.

Default value: Reconnect. Interval = 5000

Settings of Message Validation

MessageMustBeValidated

Mandatory. Defines whether the each application message is checked for existence of required tags.

Valid values: "true" | "false"

If set to ‘true’ then all application level messages are checked. If set to ‘false’ then the responsibility for message validity rests with the counterparty.

Note: Session level messages are checked in all cases. The recommended setting is ‘false’. Changing this value will impact up on the FIXEdge performance. Use ‘true’ for debugging and ‘false’ to increase performance.

Default value: MessageMustBeValidated = false

VerifyTagsValues

Optional. Defines whether the each application message is verified for tag values

Valid values: "true" | "false"

If set to ‘true’ then all messages will be verified. If set to 'false' then the responsibility for message verification rests with the counterparty.

Note: Ignored if MessageMustBeValidated = false

Default value: VerifyTagsValues = true

ProhibitUnknownTags

Optional. Defines whether the each application message is checked for the unknown tags.

Valid values: "true" | "false".

If set to ‘false’ then all application messages with unknown tags will be handled. If set to ‘true’ then FIXEdge will reject messages with unknown tags.

Note: Ignored if MessageMustBeValidated = false

Default value: ProhibitUnknownTags = false

VerifyReperatingGroupBounds

Optional. Defines whether the each application message is verified for repeating group size.

Valid values: "true" | "false".

If set to ‘true’ then FIXEdge will reject messages with incorrect repeating group size.Otherwise message will be passed to the application layer. In this case the responsibility for message validity rests with the counterparty.

Note: Ignored if MessageMustBeValidated = false

Default value: VerifyReperatingGroupBounds = true

IgnoreUnknownFields

Mandatory. If true then any field that is unknown to dictionary will be ignored. Should be false for development, true for production because if false FA stores all unknown fields in the FIXMessage in the list on the heap. With true it would ignore these fields thus limit storage on heap

Valid values: "true" | "false".

Important: this value has priority over all other validation settings: Even If (MessageMustBeValidated = true and (ProhibitUnknownTags = true or VerifyTagsValues= true)) unknown fields are ignored.

Warning: Changing this value will impact upon the performance of FIXEdge.

Note: Ignored if MessageMustBeValidated = false

Default value: IgnoreUnknownFields = false

Validation.CheckRequiredGroupFields

Optional. Controls the validation of required fields in repeating group.

Valid values: "true" | "false".

If set to ‘true’ then repeating groups will be checked for presence of required fields. If set to ‘false’ then the responsibility for repeating group validity rests with the counterparty. The recommended setting is 'true'.

Note: Ignored if MessageMustBeValidated = false

Default value: Validation.CheckRequiredGroupFields = true

AllowEmptyFieldValue

Mandatory. Defines whether the raw message may contain tags without values.

Valid values: "true" | "false".

If set to ‘true’, the raw message may contain tags without values that will be ignored.Otherwise an exception will be fired.

Default value: AllowEmptyFieldValue = false

ProhibitDuplicatedTags

Optional. This parameter is an option whereby incoming messages with duplicated tags can be processed. It's used for incoming messages.

If set to “true” incoming messages with duplicated tags will be rejected with the following message:

"Tag appears more than once [RefSeqNum: _, RefTagID: _, RefMsgType: _]".

If set to “false” raw message may contain duplicated field definitions. The default value is “true”

In FixEdge.properties file, the option can be defined in the following way:

Code Block
languagebash
themeConfluence
FixLayer.FixEngine.Session.<SessionID>.Validation.ProhibitDuplicatedTags = true

where SessionID is one of sessions defined in FixLayer.FixEngine.Sessions section.

Settings of Unregistered Acceptors

The following properties describe the behavior of unregistered acceptors:

UnregisteredAcceptor.CreateSession

Mandatory. Defines whether the FIXEdge works with Unregistered Acceptors.

Valid values: "true" | "false"

Default value: UnregisteredAcceptor.CreateSession = false

UnregisteredAcceptor.SessionStorageType

Optional. Commented. Defines the storage type for unregistered sessions.

Valid values: "persistent" | "persistentMM" | "splitPersistent" | "transient" | "null"

Default value: UnregisteredAcceptor.SessionStorageType = persistent

UnregisteredAcceptor.IgnoreSeqNumTooLowAtLogon

Optional. Commented. Defines how the FIXEdge should resolve ‘Sequence number is too low’ problem at a Logon message.

Valid values: "true" | "false".  When it set to 'true' then the session ignores error and continues to work with received sequence number.

Default value: UnregisteredAcceptor.IgnoreSeqNumTooLowAtLogon = false

UnregisteredAcceptor.RejectMessageWhileNoConnection

Optional. 

UnregisteredAcceptor.tcpBufferDisabled

Optional. 

UnregisteredAcceptor.maxMessagesAmountInBunch

Optional. 

Other Settings

EncryptionConfigFile

Optional. Defines path to encryption config file.

Default value: EncryptionConfigFile=encryption.properties

ThirdPartyRoutingIsEnabled

Mandatory. Defines whether the FIXEdge supports the "Deliver To On Behalf Of" mechanism as specified by the FIX protocol.

Valid values: "true" | "false".  

If set to 'true' then the FIXEdge will redirect FIX messages automatically to other FIX sessions that it maintains when OnBehalfOfCompID (115) tag in the incoming message is defined.

If set to ‘false’ then the FIXEdge directs all received messages in accordance with business rules.

Default value: ThirdPartyRoutingIsEnabled = false

DelayedProcessing.MaxDeliveryTries

Optional. Defines the number of attempts that will be made to deliver an application level message to the registered client application. If this value is exceeded then the session will be closed with the logout reason "Application not available".

Valid values: The value must be integer and not negative. The recommended value is 10.

Default value: DelayedProcessing.MaxDeliveryTries = 2

DelayedProcessing.DeliveryTriesInterval

Optional. Defines the time interval (in milliseconds) between attempts to deliver an application level message to a registered client application in the event the application does not confirm receipt and operation upon the message.

Valid values: The value must be integer and greater than 0.

Note: This parameter is required only if the DelayedProcessing.MaxDeliveryTries property is specified.

Default value: DelayedProcessing.DeliveryTriesInterval = 500

MessageTimeToLive

Optional. Defines the time period (in milliseconds) after which a message rejecting is starting while session doesn't exist. 

Valid values: The value must be integer and greater than 0.

Default value: MessageTimeToLive = 500

OutgoingMessagesStorageSize

Mandatory. Defines the upper limit to the number of outgoing messages that are resent in the event of a Resend Request message.

Valid values: The value must be integer and greater than 0. The value "-1" means that the number of the messages is unlimited. The recommended value is 1000 if there is no data on mean.

Default value: OutgoingMessagesStorageSize = 1000

ResendMessagesBlockSize

Mandatory. Defines how many missed messages can be requested in the one Resend Request message. If number of missed messages exceeds the value then several Resend Request messages will be sent.

Valid values: The value must be integer and not less than 0. The value “0” means that all required messages can be requested in one Resend Request message.

Default value: ResendMessagesBlockSize = 1000

CheckVersionOfOutgoingMessages

Mandatory. Defines whether the FIXEdge must validate the the version of FIX protocol (BeginString (8) tag) used for the outgoing message against the version that is established for session.

Valid values: "true" | "false"

If set to ‘true’ then the application must use the same version of the protocol as the established session otherwise an error occurs. If set to ‘false’ then the application level message will be sent to the counterparty. The recommended value is "true".

Default value: CheckVersionOfOutgoingMessages = false

DictionariesFilesList

Mandatory: Defines a semicolon (or comma) separated list of XML files with FIX protocol definitions. In additional, this parameter could containlistof XML files with additional protocol customization, if required.

Note: FIX protocol customization files must be specified after protocol definition files.

Example: DictionariesFilesList = FixEdge1/conf/fixdic44.xml;FixEdge1/conf/fixdic50.xml;FixEdge1/conf/fixdic50sp1.xml;FixEdge1/conf/fixdic50sp2.xml;FixEdge1/conf/fixdict11.xml;additional.xml

CustomRawDataTagStrategies

Optional: Array of Length* fields interpretation strategies.

       Attention: this option is introduced as workaround for exchanges, which doesn't follow FIX standard and pass length in symbols, instead of length in bytes for Length* fields, if you don't interact with such exchange,youdont' need it

Example:

Code Block
languagebash
titleengine.properties
CustomRawDataTagStrategies.Count = 1
CustomRawDataTagStrategies.1.Tag = 213
CustomRawDataTagStrategies.1.Strategy = BY_CHARS
CustomRawDataTagStrategies.1.Encoding = UTF8
CustomRawDataTagStrategies.Count

Mandatory: Count of strategies,whichwilldefined

Example: CustomRawDataTagStrategies.Count = 5

Valid values: integer not less than 1.

CustomRawDataTagStrategies.<index>.Tag

Mandatory: Define raw data tag, which Length tagged field interpretation strategy is changed

Example: CustomRawDataTagStrategies.1.Tag = 213

Valid values: integer not less than 1.Iftag doesn't have Length field - this strategy will be ignored.

CustomRawDataTagStrategies.<index>.Strategy

Mandatory: Define how to interpret corresponding length field

Example: CustomRawDataTagStrategies.5.Strategy = BY_CHARS

Valid values: BY_CHARS - use count of characters | BY_BYTES - use count of bytes

CustomRawDataTagStrategies.<index>.Encoding

Mandatory: Defines which encoding should be used if to obtain raw data field value size in bytes if BY_CHARS strategy is used

Example: CustomRawDataTagStrategies.3.Encoding = UTF8

Valid values: UTF8 | ASCII

Monitoring.ListenPort

Optional. Allows to define port which will be added to set of engine listen ports and administrative sessions will be accepted on this port only. At the same time common session acceptance is permitted on the port.

Note
Note: if this port is configured FIXICC agent (2.7.23.3 version only) will use it to establish the administrative session.

Example:

Code Block
languagebash
titleengine.properties
# The engine TCP listen port that is enabled for administrative sessions
# The parameter is not required.
# If port is configured it will be added to set of engine listen ports and administrative sessions will be accepted on this port only
# If not exists or empty common engine listen ports are used to accept administrative sessions
Monitoring.ListenPort = 8901
Note

Hint: if you don't know what FIXICC agent version is installed in your system, you can put Monitoring.ListenPort to list of listen ports at the first place. Therefore FE behavior will be the same as in example regardless of FIXICC agent version.

Hint example:

Code Block
languagebash
ListenPort = 8900, 8901
Monitoring.ListenPort = 8900

Settings of Registered FIX Sessions

This part describes set of properties related to each registered FIX session (‘FIXEdge.properties’ configuration file). Each property's name contains within itself the name of FIX session. The format is: FixLayer.FixEngine.Session.<Session_Name>.<ParameterName>.

Properties for Acceptors and Initiators

FixLayer.FixEngine.Session.Session_Name.Description

Optional. Contains the session description.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Description = Just a FIX session for testing.

FixLayer.FixEngine.Session.Session_Name.Version

Mandatory. Defines version of FIX protocol or custom protocol of the registered session

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Version = FIX44

FixLayer.FixEngine.Session.TestFIXAcceptor.Version = FIXT11:FIX50SP2

FixLayer.FixEngine.Session.Session_Name.Role

Mandatory. Defines a role  of the registered session

Valid values: "Acceptor" | "Initiator"

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Role = Acceptor

FixLayer.FixEngine.Session.Session_Name.SenderCompID

Mandatory Key parameter for purposes of session identification.  Sets value of SenderCompID (49) tag in outgoing FIX messages.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.SenderCompID = FIXEDGE

FixLayer.FixEngine.Session.Session_Name.TargetCompID

Mandatory. Key parameter for purposes of session identification. Sets value of TargetCompID (56) tag in outgoing FIX messages.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.TargetCompID = FIXCLIENT

FixLayer.FixEngine.Session.Session_Name.SessionQualifierValue

Optional. Allows to set the name of SessionQualifier.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.SessionQualifierValue = Q1

FixLayer.FixEngine.Session.Session_Name.StorageType

Mandatory.  Defines the session storage type.

Valid values: "persistent" | "persistentMM" | "splitPersistent" | "transient" | "null"

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.StorageType = persistentMM

FixLayer.FixEngine.Session.Session_Name.Username

Optional. Sets value of Username (553) tag in Logon message

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Username = user

FixLayer.FixEngine.Session.Session_Name.Password

Optional. Sets value of Password (554) tag in Logon message

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Password = foobar

FixLayer.FixEngine.Session.Session_Name.UsernameTag

Optional. This parameter of Username field sets tag value of Username in Logon message.

Example: FixLayer.FixEngine.Session.Session_Name.UsernameTag=10533 – sends Username in a custom tag 10533

Default value: FixLayer.FixEngine.Session.Session_Name.UsernameTag=553

FixLayer.FixEngine.Session.Session_Name.PasswordTag

Optional. This parameter of Password field sets tag value of Password in Logon message.

Example: FixLayer.FixEngine.Session.Session_Name.PasswordTag=10554 – sends Password in a custom tag 10544

Default value: FixLayer.FixEngine.Session.Session_Name.PasswordTag=554

FixLayer.FixEngine.Session.Session_Name.SenderSubID

Optional. Sets value of SenderSubID (50) tag in outgoing FIX messages

FixLayer.FixEngine.Session.Session_Name.TargetSubID

Optional. Sets value of TargetSubID (57) tag in outgoing FIX messages 

FixLayer.FixEngine.Session.Session_Name.SenderLocationID

Optional. Sets value of SenderLocationID (142) tag in outgoing FIX messages

FixLayer.FixEngine.Session.Session_Name.TargetLocationID

Optional. Sets value of TargetLocationID (143) tag in outgoing FIX messages

FixLayer.FixEngine.Session.Session_Name.EncryptMethod

Mandatory.  Defines method of encryption for registered session. Sets value of EncryptMethod (98) tag in Logon message.

Valid values:

  • 0 - None / other
  • 1 - PKCS (proprietary)
  • 2 - DES (ECB mode)
  • 3 - PKCS/DES (proprietary)
  • 4 - PGP/DES (defunct)
  • 5 - PGP/DES-MD5 (see app note on FIX web site)
  • 6 - PEM/DES-MD5 (see app note on FIX web site)

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.EncryptMethod =  0

FixLayer.FixEngine.Session.Session_Name.InSeqNum

Optional. Defines the initial incoming sequence number. It is expected that the first incoming message will have the specified sequence number.

Valid values: 0, 1, 2, ...  Value "0" means that initial sequence number = 1. 

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.InSeqNum = 0

FixLayer.FixEngine.Session.Session_Name.OutSeqNum

Optional. Defines the initial outgoing sequence number. The first outgoing message will be sent with the specified sequence number.

Valid values: 0, 1, 2, ...  Value "0" means that initial sequence number = 1.

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.OutSeqNum = 0

FixLayer.FixEngine.Session.Session_Name.RecreateOnLogout

Mandatory. Defines whether the session must be recreated on the logout.

Valid values: "true" | "false"

If set to 'false' then the session is removed from the list of sessions after successful disconnection.

If set to 'true' then the session will be recreated after disconnection, it means:

Note : Recreation will take place only if disconnection is initialized by the counterparty by the logout message.

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.RecreateOnLogout = false

FixLayer.FixEngine.Session.Session_Name.TerminateOnLogout

Optional. 

Valid values: "true" | "false"

FixLayer.FixEngine.Session.Session_Name.IntradayLogoutTolerance

Optional. Defines using of the Intraday Logout Tolerance mode in particular registered session. 

Valid values: "true" | "false"

This property overrides the IntradayLogoutTolerance property in configuration file 'engine.properties' for the particular session.

Note : If a new session is created via FIXICC then the default value is taken from the IntradayLogoutTolerance property.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.IntradayLogoutTolerance = true

FixLayer.FixEngine.Session.Session_Name.ForceSeqNumReset

Optional. Defines using of the Force Sequence Number Reset mode for particular session.

Valid values: "0" or "false" | "1" or "true" | "2".  If property is set in another value - the value from property ForceSeqNumReset in configuration file 'engine.properties' is used.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.ForceSeqNumReset = 2

FixLayer.FixEngine.Session.Session_Name.HandleSeqNumAtLogon

Optional.

Valid values: "true" | "false"

FixLayer.FixEngine.Session.Session_Name.SocketPriority

Optional. Defines priority of the socket Send \ Receive operations.

Valid values:

  • EVEN - Share worker thread among all session in the Engine

  • AGGRESSIVE_SEND  - Use dedicated thread to send outgoing messages

  • AGGRESSIVE_RECEIVE - Use dedicated thread to receive incoming messages

  • AGGRESSIVE_SEND_AND_RECEIVE - Enables the both aggressive sending and aggressive receiving options

  • DIRECT_SEND - use the current thread for sending, if this would block, performs as "EVEN".

Note:  If parameter not specified for session then ‘SocketOpPriority engine parameters will be used instead.

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.SocketPriority = EVEN

FixLayer.FixEngine.Session.Session_Name.TcpBufferDisabled

Optional. 

Valid values: "true" | "false"

FixLayer.FixEngine.Session.Session_Name.RejectMessageWhileNoConnection

Optional. 

Valid values: "true" | "false"

FixLayer.FixEngine.Session.Session_Name.ForceReconnect

Optional.

Session will be reconnected in the following situations:

1) In WaitForConfirmLogon state when session received not a confirming logon

2) In WaitForConfirmLogon state when logon frame expired

3) In Reconnect state when session was closed

4) In Initial state of session-initiator, when there were no acceptor exists. In this case this property works with the 'Reconnect.MaxTries' property in 'engine.properties' for registered session:

a) if FixLayer.FixEngine.Session.Session_Name.ForceReconnect = false, the parameter Reconnect.MaxTries will be ignored, Utils::Exception will be thrown

b) If FixLayer.FixEngine.Session.Session_Name.ForceReconnect = true, the parameter Reconnect.MaxTries will be used

Valid values: "true" | "false"

Default value: FixLayer.FixEngine.Session.FIXAcceptor.ForceReconnect = false

FixLayer.FixEngine.Session.Session_Name.ResetSeqNumAtScheduledStartTime

Optional. Sequence number will be reset to initial value in case session will established by 'StartTime' start scheduling at the next day.

Valid values: "true" | "false"

Default value: FixLayer.FixEngine.Session.FIXAcceptor.ResetSeqNumAtScheduledStartTime = false

FixLayer.FixEngine.Session.Session_Name.DefaultApplicationProtocol

Optional.

FixLayer.FixEngine.Session.Session_Name.PredefinedMessages

Optional. 

FixLayer.FixEngine.Session.Session_Name.PredefinedMessage

Optional. 

FixLayer.FixEngine.Session.Session_Name.ActiveConnection

Optional. 

FixLayer.FixEngine.Session.Session_Name.KeepState

Optional. 

FixLayer.FixEngine.Session.Session_Name.EnableAutoSwitchToBackupConnection

Optional. If it is set as "true" an active session can automatically reconnect to its backup session (after ReconnectMaxTries attempts to connect) in case there is a problem to connect to host / port of the active one. In order to maintain the proper sequence number between twosession HandleSeqNumAtLogon should be defined as "true".

Valid values: "true" | "false"

Default value: FixLayer.FixEngine.Session.Session_Name.EnableAutoSwitchToBackupConnection= false

FixLayer.FixEngine.Session.Session_Name.EnableCyclicSwitchBackupConnection

Optional. If it is set as "true" a backup session can automatically switch back to the active session (after ReconnectMaxTries attempts to connect) once the backup connection has problems.

Valid values: "true" | "false"

Default value: FixLayer.FixEngine.Session.Session_Name.EnableCyclicSwitchBackupConnection = false

FixLayer.FixEngine.Session.Session_Name.MaxMessagesAmountInBunch

Optional. 

Default value: FixLayer.FixEngine.Session.TestFIXAceptor.MaxMessagesAmountInBunch = 0

FixLayer.FixEngine.Session.Session_Name.SecurityGroups

Optional. 

FixLayer.FixEngine.Session.Session_Name.Protocol

Optional. Defines underlying protocol of FIX session.

Valid values: "FIX_TCP" | " FIXT11_TCP" | "FIXT11_FAST_TCP"

Default valueFixLayer.FixEngine.Session.TestFIXAceptor.Protocol = FIX_TCP  - if session Version is FIX4x 

FixLayer.FixEngine.Session.TestFIXAceptor.Protocol = FIXT11_TCP - if session Version is FIX5x

FixLayer.FixEngine.Session.Session_Name.CustomRawDataTagStrategies

Optional: Array of references to CustomRawDataTagStrategies array entries

Example:

Code Block
FixLayer.FixEngine.Session.Session1.CustomRawDataTagStrategies.Count = 2
FixLayer.FixEngine.Session.Session1.CustomRawDataTagStrategies.1.Strategy = 2
FixLayer.FixEngine.Session.Session1.CustomRawDataTagStrategies.2.Strategy = 5
FixLayer.FixEngine.Session.Session_Name.CustomRawDataTagStrategies.Count

Mandatory: Count of references to strategies, used by session

Valid values: integer not less than 1.

Example:  FixLayer.FixEngine.Session.Session1.CustomRawDataTagStrategies.Count = 2

FixLayer.FixEngine.Session.Session_Name.CustomRawDataTagStrategies.<index>.Strategy

Mandatory: Reference to CustomRawDataTagStrategies array entry

Valid values: integer not less than 1.

Example:  FixLayer.FixEngine.Session.Session1.CustomRawDataTagStrategies.3.Strategy = 2

FixLayer.FixEngine.Session.Session_Name.IncomingMessagesLimit

Optional. Define a limit for messages received by session. Both the session-level messages and application level messages are counted.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.IncomingMessagesLimit = 1000

Default value for parameter is '0' - unlimited, no events will be created on business level in such case.

For more information please read the article Overload protection in FIXEdge.

FixLayer.FixEngine.Session.Session_Name.IncomingThroughputLimit

 Optional. Define a limit for incoming messages throughput.

 Example: FixLayer.FixEngine.Session.TestFIXAcceptor.IncomingThroughputLimit = 25

Default value for parameter is '0' - unlimited, no events will be created on business level in such case.

For more information please read the article Overload protection in FIXEdge.

FixLayer.FixEngine.Session.Session_Name.OutgoingQueueSize 

 Optional. Define a limit for outgoing queue.

 Example: FixLayer.FixEngine.Session.TestFIXAcceptor.OutgoingQueueSize  = 10.

Default value for parameter is '0' - unlimited, no events will be created on the business level in such case.

For more information please read the article Overload protection in FIXEdge.

FixLayer.FixEngine.Session.Session_Name.StorageRecoveryStrategy

 Define a recovery storage strategy in case of broken storage.

Valid values:

  • NONE - exception on error in FA, don't start session in FixEdge
  • CREATE_NEW_ON_ERROR - create new storage on any error

 Example: FixLayer.FixEngine.Session.TestFIXAcceptor.StorageRecoveryStrategy = CREATE_NEW_ON_ERROR

Default value for parameter is 'NONE'.

FixLayer.FixEngine.Session.Session_Name.HiddenLogonCredentials

Optional. Provides an option to mask password in in/out log files.

Valid values: "true" | "false".

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.HiddenLogonCredentials = true.

FixLayer.FixEngine.Session.Session_Name.MaskedTags

Optional. Provides an option to mask any tag value in the log files.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.MaskedTags = 554,553.

 The message will be written to the log file in the following way: 8=FIX.4.4^9=85^35=A^49=a_t1^56=a_s1^34=1^52=20161005-17:29:14.339^98=0^108=10^141=Y^553=***^554=***^10=176^

FixLayer.FixEngine.Session.Session_Name.SendingTimestampUnit

Note

Parameter is available since FIXEdge 6.2.0.

Optional. Defines the precision of the timestamp to be specified in 52 tag (SendingTime) and 122 tag (OrigSendingTime) in outgoing message.

Valid values: second | millisecond | microsecond | nanosecond

Defaults:

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.SendingTimestampUnit = nanosecond

FixLayer.FixEngine.Session.Session_Name.ResendMessagesLimit

Optional. Defines the maximum volume of messages sent as a reply on resend request.

Valid values:

  • "-1" - disabled
  • "0" - do not resend real messages, reply with GapFill
  • positive number - max number of messages.

Default value: FixLayer.FixEngine.Session.Session_Name.ResendMessagesLimit = -1

Important: if ResendMessagesLimit property for the FIX session is set to "0" or to any positive number, then another mechanism for ignoring duplicate resend requests is automatically enabled.

For more information please read the article How to handle Resend Requests.

FixLayer.FixEngine.Session.Session_Name.CustomSessionType 

Optional. Specifies whether a session should encrypt password each time.

Valid values: 

  • GENERIC - generic session
  • LME_SELECT- encrypt password tag each time
  • TOTAL_SSN_TYPES - represent number of sessions types 
  • CME_SECURE_LOGON - use CME secure logon scheme  

Default value: GENERIC 

FixLayer.FixEngine.Session.Session_Name.CMESecureKeysFile 

OptionalSpecifies a path to CME keys files used for CME secure logon 

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.Version = CMEKeys.txt 

FixLayer.FixEngine.Session.Session_Name.sendLastMsgSeqNumProcessed

OptionalAllows automatic adding the LastMsgSeqNumProcessed(369) tag to outgoing messages.

Valid values: "true" | "false"

Default value: false


The group of settings for FAST sessions

FixLayer.FixEngine.Session.Session_Name.FastTemplateFn

Mandatory for FAST session (Protocol = FIXT11_FAST_TCP). Defines path to file with FAST templates.

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.FastTemplateFn = FixEdge1/conf/fixt11-fix50sp2-templates.xml

FixLayer.FixEngine.Session.Session_Name.EnableFastScp

Optional.  Enables or disables sending of FAST Hello message before Logon.

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.EnableFastScp = true

FixLayer.FixEngine.Session.Session_Name.FASTCodecParameters.BoolNtoString

Optional.  Defines string representation of FIX boolean 'false' value in FAST encoded message

Default value: Character with ASCII code 0

FixLayer.FixEngine.Session.Session_Name.FASTCodecParameters.BoolYtoString

Optional.  Defines string representation of FIX boolean 'true' value in FAST encoded message

Default value: Character with ASCII code 1

Additional properties for Acceptors only

FixLayer.FixEngine.Session.Session_Name.SourceIPaddress

Optional. Defines the expected value of the source IP address. If the real value is not equal to the expected one then the session is disconnected without sending a message and an error condition is generated in the log output.

Warning

For more details read the following article: How to specify multiple IP addresses per FIX Session

FixLayer.FixEngine.Session.Session_Name.LogonMessageSessionQualifierTag

Optional. Allows to set a tag into the logon message in which the SessionQualifier will be sent. Even custom tags can be used but it's recommended to use standard tags for this purpose, e.g. 553 (Username) or 50 (SenderSubID). 

Example: FixLayer.FixEngine.Session.TestFIXAcceptor.LogonMessageSessionQualifierTag = 553

Additional properties for Initiators only

FixLayer.FixEngine.Session.Session_Name.IgnoreSeqNumTooLowAtLogon

Optional. Defines how the FIXEdge should resolve ‘Sequence number is too low’ problem at a logon message.

Valid values: "true" | "false".  When it set to 'true' then the session ignores error and continues to work with received sequence number.

Default value: FixLayer.FixEngine.Session.TestFIXAcceptor.IgnoreSeqNumTooLowAtLogon = false


...