Versions Compared

Key

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

...

Unregistered Acceptors parameters

CreateUnregisteredAcceptorSession

This parameter provides an option whereby FIX Engine will accept a FIX session for which it has no registered application (an acceptor).

If set to 'true', Engine accepts an incoming connection and creates the corresponding Session object. If there is no application associated with the session, all application-level messages are rejected with the Application Level Reject(3) message. If an application is registered, the behavior is standard. If set to 'false', Logon messages are ignored and the incoming connection is dropped. Property is obsolete, UnregisteredAcceptor.CreateSession should be used instead.

UnregisteredAcceptor.CreateSession

This parameter provides an option whereby FIX Engine will accept a FIX session for which it has no registered application (an acceptor).

If set to 'true', Engine accepts an incoming connection and creates the corresponding Session object. If there is no application associated with the session, all application-level messages are rejected with the Application Level Reject(3) message. If an application is registered, the behavior is standard. If set to 'false', Logon messages are ignored and the incoming connection is dropped.

UnregisteredAcceptor.IgnoreSeqNumTooLowAtLogon

This parameter allows accepting sessions with seqNum in the Logon lower than expected by FIX Engine.

When true, the session continues with the received seqNum.

UnregisteredAcceptor.maxMessagesAmountInBunch

FA is able to join packages that wait for sending into the socket, these parameters control how many messages could be joined.

0 means infinite. The value should be less than 1000000.

UnregisteredAcceptor.RejectMessageWhileNoConnection

When true, unregistered acceptors will reject messages in case they couldn't be sent during the interval specified in the MessageTimeToLive parameter.

You can find more information about how to use this parameter here: How to use "RejectMessageWhileNoConnection" parameter

UnregisteredAcceptor.tcpBufferDisabled

When true, the TCP buffer (Nagle algorithm) will be disabled for unregistered acceptors.

Otherwise, TCP may join and enqueue small packages until the timeout ends.

UnregisteredAcceptor.SessionStorageType

The default storage type of created unregistered sessions.

Use the "transient" value to use transient storage for the sessions.

Default value: persistentMM

General Message Validation parameters

Info
These parameters apply validation on the whole application (Engine level parameters)

MessageMustBeValidated

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

Valid values: 'true' | 'false'

This parameter is equal to Validation.IsEnabled but has lower priority.

Default value: true

VerifyTagsValues

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

Valid values: 'true' | 'false'

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

Note: Ignored if MessageMustBeValidated = false

Default value: true

ProhibitUnknownTags

If set to 'true', the FIX engine will reject messages with undefined tags in the FIX dictionary. For additional information see How to configure validation for non-user tags?

Note: Ignored if MessageMustBeValidated = false

Default value: false

VerifyRepeatingGroupBounds

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

Valid values: 'true' | 'false'

If set to ‘true’, the Engine will reject messages with incorrect repeating group size. Otherwise, the message will be passed to the application layer. 

Note: Ignored if MessageMustBeValidated = false

Default value: true

Info

VerifyRepeatingGroupBounds = "false" has no effect since FIX Antenna 2.28.1 release.

Prior to FIX Antenna version 2.28.1, VerifyRepeatingGroupBounds was called VerifyReperatingGroupBounds.

VerifyRepeatingGroupTagsOrder

Optional.

Valid values: 'true' | 'false'

If set to ‘true’, the Engine will check whether the first field of the repeating group is the same as specified in the dictionary. If it's not the same, then FIX Engine will reject the message.

If set to 'false', the Engine will consider the first tag from the first repeating group entry as its first field so the following entries of this repeating group must have the same first field.

Default value: false

IgnoreUnknownFields

If set to 'true', FIX Engine removes the undefined or user's fields from the message and this increases the performance.

If set to 'false', FIX Engine allocates and keeps in memory the undefined or user's fields so performance is reduced but Engine doesn't truncate the data in the message. This parameter should be used along with the ProhibitUnknownTags parameter. For more details see How to configure validation for non-user tags?

Note: Ignored if MessageMustBeValidated = false

Default value: false

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: false

AllowZeroNumInGroup

The parameter defines whether the Engine should accept repeating groups with a group size equal to '0' and no entries.

Valid values: 'true' | 'false'

If set to 'true', FIX Engine will accept messages as is. If set to 'false' and the VerifyTagsValues parameter is set to 'false' then the empty group will be removed from the message. Otherwise, the message will be rejected with the ERROR.

Default value: false

AllowMessageWithoutPossDupFlag

ValidateCheckSum

If set to 'truefalse', the session will skip CRC validation for incoming messages.

Default value: true

MaxTagNumberForValidation

Info

This parameter is available since FIX Antenna 2.29.0 release.

The FIX trading community allows a user to introduce their own tags as user-defined tags. The FIX Antenna engine has special rules for the validation of user-defined tags. It will accept any tag higher than the MaxTagNumberForValidation, even if the tags are not described in the dictionary. That means that FIX Antenna will not treat these tags as unknown so validation rejects will not be generated for these kinds of tags. If the user needs to validate unknown tags higher than 4999, the user should switch the maximum value as needed by modifying this property. For versions of FIX Antenna prior to 2.29.0, the maximum value of user-defined tags was hardcoded as 4999.

Info

The maximum value of user-defined tags can differ from venue to venue. If a venue needs validation, the user should set MaxTagNumberForValidation equal to or higher than the highest tag value of custom tags in the venue's specification.

For example, for ICE, this property should be set to 10,000 or higher because for ICE TC v. 4.11. the highest custom value is 9904.

For CQG, this property should be 60,000 or higher.

The value for this property must be a positive number.

Default value: 4999

This default value maintains backward compatible behavior for FIX Antenna prior to version 2.29.0.

Expand
titleTroubleshooting for MaxTagNumberForValidation

When the maximum tag value in FIX Antenna is not set to a number equal to or higher than the highest tag in a venue's specification, it can lead to an error in message validation. In turn, FIX Antenna may reference an unexpected and incorrect cause of the validation error in the error message it returns.

For example, the attached message ICE_SECDEF_9134.in will result in a validation error due to not defined tag 9134 being in position 254, however, the error explanation (below) shows a different position (99846).

Code Block
8=FIX.4.4|9=200|35=3|49=FIXEDGE|56=SENDER|34=3|52=20201106-11:48:35.966|45=3|371=326|372=d|373=2|58=Tag 326 is not defined for this message type. Parsing stopped at column: 99846 in message d with sequence number 3.|10=181|

Session Message Validation parameters

Info
These parameters apply validation on a single session (Session level parameters). For applying parameters to multiple session as defaults see Configure Defaults for All Sessions

Validation.IsEnabled

This parameter is an option whereby validation in messages (application and session levels) can be controlled.

If set to 'true' all application messages will be validated. If set to 'false' validation of the messages will be skipped.

FIX Antenna behavior in the case when IsEnabled = false is different depending on the validation type.

  • "Required tag missing" validation:

Parameter IsEnabled = false is used for outgoing messages (only application level) and incoming messages (both application and session levels).

  • "Tag specified without a value" validation:

Parameter IsEnabled = false is used for outgoing messages (both application and session levels) and incoming messages (only application level).

Please note: when setting IsEnabled = false don't forget to set ProhibitTagsWithoutValue = true.

  • "Unknown tags" validation:

Parameter IsEnabled = true/false doesn't matter for messages. Only the IgnoreUnknownFields value matters for validation.

Please note: when setting IsEnabled = false don't forget to set ProhibitUnknownTags = true/false and  IgnoreUnknownFields = false.

This parameter is optional.

Default value: true

Validation.CheckRequiredGroupFields

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

Valid values: true, false

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

Note: Ignored if MessageMustBeValidated = false

Default value: true

Validation.AllowZeroNumInGroup

The session parameter defines whether the Engine should accept repeating groups with a group size equal to '0' and no entries.

Valid values: 'true' | 'false'

If set to 'true', FIX Engine will accept messages as is. If set to 'false' and the VerifyTagsValues parameter is set to 'false' then the empty group will be removed from the message. Otherwise, the message will be rejected with the ERROR.

Default value: false

Validation.IgnoreUnknownFields

If set to 'true', FIX Engine removes the undefined or user's fields from the message and this increases the performance.

If set to 'false', FIX Engine allocates and keeps in memory the undefined or user's fields so performance is reduced but Engine doesn't truncate the data in the message. This parameter should be used along with Validation.ProhibitUnknownTags parameter. For more details see How to configure validation for non-user tags?

Note: Ignored if MessageMustBeValidated = false

Default value: false

Validation.ProhibitDuplicatedTags

When a parameter is set to 'false' the raw message may contain duplicated field definitions. Otherwise, the messages reject is rejected.

Default value: true

Validation.ProhibitTagsWithoutValue

Valid values: true, false

When set to 'false', a raw message may contain tags without values - they will be ignored. Otherwise, std::exception is fired.

Validation.ProhibitUnknownTags

If set to 'true', the FIX engine will reject messages with undefined tags in the FIX dictionary. For additional information see How to configure validation for non-user tags?

Valid values: true, false

Default value: false

Validation.VerifyRepeatingGroupBounds

Optional. If set to 'true', verifies a repeating group size for messages received by the session. Invalid messages will be rejected.

It has a higher priority than VerifyRepeatingGroupBounds.

Valid values: true, false

Note: Ignored if MessageMustBeValidated = false

Default value: true

Info

Validation.VerifyRepeatingGroupBounds = "false" has no effect since FIX Antenna 2.28.1 release.

Prior to FIX Antenna version 2.28.1, Validation.VerifyRepeatingGroupBounds was called Validation.VerifyReperatingGroupBounds.

Validation.VerifyRepeatingGroupTagsOrder

Optional.

Valid values: true, false

If set to ‘true’, the Engine will check whether the first field of the repeating group is the same as specified in the dictionary. If it's not the same, then FIX Engine will reject the message.

If set to 'false', the Engine will consider the first tag from the first repeating group entry as its first field so the following entries of this repeating group must have the same first field.

Default value: false

Validation.VerifyTagsValues

This parameter controls tag values validation.

Valid values: true, false

If set to 'true', then all messages will be validated. If set to 'false' then the responsibility for message validity rests with the counterparty.

Default value: false

Logging parameters

Log.File.Format

Customformatoflogfilerecord. Can be defined separately for each log file e.g. Log.Version.File.Format = ...

The format string can contain any symbols and keywords:

  • %% - put '%' symbol;
  • %level - put severity level name: 'ERROR', 'WARN' etc.;
  • %tablevel - put extra spaces for vertical alignment of records after %level;
  • %date{FIX} - date in 'YYYYMMDD-HH:MM:SS.sss' format;
  • %date{ISO8601} - date in 'YYYY-MM-DD HH:MM:SS,sss' format;
  • %date - date in 'DD MMM YYYY HH:MM:SS,sss' format;
  • %timezone - time zone abbreviation or name (setup TZ env variable to take abbreviation in windows) or 'UTC';
  • %logger - log category, component;
  • %thread - thread id;
  • %thread_name - prints the name of the thread
  • %message - logged message.

Default value:

Code Block
languagebash
Log.File.Format = [%level] %tablevel%date{FIX} [%thread] [%logger] - %message

Log.File.CreateUniqueFileName

If true new unique file name will be created. Log.File.Name value is a pattern. 

If false Log.File.Name will be used as a file name.

If Log.Device is not specified explicitly (in other words, Log.Device = "File" as default), Log.File.CreateUniqueFileName = 'false' as default.

Log.Cycling

Enables/disables log file cycling. 

Valid values:

  • true - to enable cycling;
  • false - to disable cycling.

If set to 'true', then repeating records in logs will be controlled and replaced with the single "cycling record" according to the specified cycling parameters. Seecyclling parameters described below for details.

Log.Cycling.Ignore

A number of repeating records are to be placed to log before cycling is started.

Log.Cycling.BlockSize

A number of repeating records are to be accumulated (hidden) before writing the "cycle record" to the log.

Log.Cycling.Multiplier

The multiplier for the BlockSize. If the BlockSize number of messages is accumulated and the same message still appears then the next BlockSize is calculated as the previous one multiplied by Multiplier.

Log.Device

Default target devices.

The properties of the device are stored in the "Log.<name>" section. For instance the Log.Engine section contains all Engine properties.

Valid values:

  • File - messages will be written to the file;
  • Console - messages will be written to the console;
  • EventLog (Windows specific) - messages will be written to the Windows Event Log;
  • WinDebug (Windows specific) - messages will be written to the OutputDebugString;
  • Syslog (Linux/Unix specific) - messages will be written to the system log.
  • Log4Cplus - messages will be written to Log4Cplus (since FIXEdge version 6.7)

Default value: File

Info

If the Log.Engine.Device property is set, then the Engine logs will be written to the _<timestamp>.log file.

If the Log.Engine.Device property is not set, then the Engine will overwrite the following properties:

Log.Engine.Device = File

Log.Engine.File.RootDir = the value of the Log.File.RootDir property

Log.Engine.File.Name = the value of the LogFileName property

Log.Engine.File.CreateUniqueFileName = false

And two log files will be created: _<timestamp>.log and engine_<timestamp>.log. 

Multiple devices can be chosen - the names of devices should be separated by a space in this case. For example, by setting the Log.Device property to the "File Log4Cplus" value logging will be performed by both creating standard log files and forwarding them to Log4Cplus.

Info

Log4Cplus can be used to send log messages to external services such as Splunk. FIXEdge does not guarantee each log message delivery when:

  1. The log message receiver is not available (not listening on the given port).
  2. The Log message receiver throughput is less than the log flow produced by FIXEdge.

In these cases, FIXEdge will drop the messages it was unable to send.

Log.EventLog.EventSource

A string that specifies the name of the source. The source name must be a subkey of a log file entry under the EventLog key in the registry.

For example, "WinApp" is a valid source name if the registry has the following key: "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Event Log\Application\WinApp".

Log.File.AutoFlush

If set to 'true', then the buffer will be flushed after each logging call.

If set to false then flush is not called.

Setting to true decreases program performance; setting to false increases the risk of records loss in case of program failure.

Log.File.Backup.Time

Optional. The local time when logs should be backed up. When the specified backup time comes, the scheduler moves log files to the specified backup directory.

Should be in format 'hh:mm' or 'hh:mm:ss'.

Log.File.Locked

If set to 'true' then lock file <Log.File.RootDir/Log.File.Name>.lock will be created. This will prevent other instances of the application use the same file.

Valid values:

  • true - lock log file;
  • false - do not lock the log file.

Log.File.Recreate

Specifies if FIX Engine should create a new file with a unique name or append logs to the existing file.

Valid values:

  • true - the new log file will be created on each start. The filename contains a timestamp of creation.
  • false - the engine appends the logs to the already created file.

Log.File.RootDir

The root directory for log files. It will be concatenated with each file name specified by 'Log.File.Name'. If Log.Device is not specified explicitly (in other words, Log.Device = "File" as default), Log.File.RootDir = LogDirectoryas default.

You can find more information about how to configure paths to log files here: How to configure paths to FIXEdge log files.

Log.File.Rotate

Enables/disables log file rotation.

Valid values:

  • true - to enable rotation;
  • false - to disable rotation.

If set to 'true', after the specified file size is reached, it is renamed and a new log file is created. See rotation parameters described below for details.

Log.File.Rotate.SizeLimit

Sizeoffileinbytes.Whenlogfilereaches this size it is renamed (follow standard rotation approach) and the new file is created.

Example: Log.File.Rotate.SizeLimit = 104857600

Log.File.Rotate.FileLimit

A number of files are to be involved in the rotation. When the number is exceeded, the older file is removed.

Example: Log.File.Rotate.FileLimit = 10

Log.File.Rotate.Dir

Rotation directory. Directory to store rotated files.
Example: Log.File.Rotate.Dir = <%SERVICE_NAME%>/log

Log.File.TimeZone

Time zone of the log message timestamp.

Valid values:

  • Local - display time as local;
  • UTC - UTC.

Log.File.Name

File name. If more than one category uses files with the same name, the same file will be used simultaneously.

Log.DebugIsOn

Enable Debug messages.

Valid values:

  • true - to enable Debug messages;
  • false - to disable Debug messages.

Log.ErrorIsOn

Enable Error messages.

Valid values:

  • true - to enable Error messages;
  • false - to disable Error messages.

Log.FatalIsOn

Enable Fatal Error messages.

Valid values:

  • true - to enable Fatal Error messages;
  • false - to disable Fatal Error messages.

Log.NoteIsOn

Enable Note messages.

Valid values:

  • true - to enable Note messages;
  • false - to disable Note messages.
Info

Starting from FIX Antenna 2.10.16.3, Note messages are indicated as INFO records in logs.

Log.WarnIsOn

Enable Warning messages.

Valid values:

  • true - to enable Warning messages;
  • false - to disable Warning messages.

Log.TraceIsOn

Enable Trace messages.

Valid values:

  • true - to enable Trace messages;
  • false - to disable Trace messages

Log.OpenLDAP.TraceIsOn

Enableswritingofdebuglog records fromOpenLDAPlibrary to the logs. The parameter has been added since FIXEdge 6.2.

Valid values:

  • true - to enable OpenLDAP library debug-level logging;
  • false - to disable OpenLDAP library debug-level logging

Affinity parameters

WorkerCpuAffinity

Defines an affinity mask for all worker pool threads.

Affinity is specified as bitmask where the serial number of the bit is the serial number of the core if read from the right to the left. Mask should be presented in the decimal system.

Info

E.g. to specify the second, third, and fourth cores, the affinity in bytes will look like "1110". It is "14" in the decimal system. So, for proper use the property should be set in the following way:

Code Block
WorkerCpuAffinity = 14

Default value: 0 - Engine will not change thread affinity mask.

HelperCpuAffinity

Defines an affinity mask for the dispatcher and other auxiliary threads.

Affinity is specified as a bit mask where the serial number of the bit is the serial number of the core if read from the right to the left. Mask should be presented in the decimal system.

Info

E.g. to specify the third and fourth cores, the affinity in bytes will look like "1100". It is "12" in the decimal system. So, for proper use the property should be set in the following way:

Code Block
HelperCpuAffinity = 12

Default value: 0 - Engine will not change thread affinity mask.

CpuAffinity

Specifies affinity mask for dedicated threads of the session. It makes sense only for aggressive modes.

Affinity is specified as bitmask where the serial number of the bit is the serial number of the core if read from the right to the left. Mask should be presented in the decimal system.

Info

E.g. to specify the fourth, sixth, and eighth cores, the affinity in bytes will look like "10101000". It is "168" in the decimal system. So, for proper use the property should be set in the following way:

Code Block
CpuAffinity = 168

Default value: 0 - The engine will not change the thread affinity mask.

RecvCpuAffinity

Specifies affinity mask for dedicated receiving thread of session. It makes sense only for aggressive receive mode.

Affinity is specified as a bit mask where the serial number of the bit is the serial number of the core if read from the right to the left. Mask should be presented in the decimal system.

Info

E.g. to specify the third, sixth, seventh, and eight cores, the affinity in bytes will look like "11100100". It is "228" in the decimal system. So, for proper use the property should be set in the following way:

Code Block
RecvCpuAffinity = 228

Default value: 0 - Engine will not change thread affinity mask.

SendCpuAffinity

Specifies affinity mask for dedicated sending thread of session. It makes sense only for aggressive send mode.

Affinity is specified as a bit mask where the serial number of the bit is the serial number of the core if read from the right to the left. Mask should be presented in the decimal system.

Info

E.g. to specify the second, fifth, and seventh scores, the affinity in bytes will look like "01010010". It is "82" in the decimal system. So, for proper use the property should be set in the following way:

Code Block
SendCpuAffinity = 82

Default value: 0 - The engine will not change the thread affinity mask.

Monitoring parameters

Monitoring parameters can be defined as defaults (Monitoring.AdminSessionDef.<Name_Of_Parameter>) or for a particular administrative session (Monitoring.AdminSession..<Name_Of_Administrative_Session>.<Name_Of_Parameter>). Below the definition of defaults is presented.

Monitoring.AdminSessionDef.DisableTCPBuffer

When true TCP buffer (Nagle algorithm) will be disabled for the session.

Monitoring.AdminSessionDef.EncryptMethod

The expected value of the encryption method.

Monitoring.AdminSessionDef.ForceSeqNumResetMode

Force SeqNum reset mode.

An option to use the 141 tag in the Logon message to reset the sequence number.

Monitoring.AdminSessionDef.IgnoreSeqNumTooLowAtLogon

When true, the session ignores 'SeqNum too low' at the incoming Logon message and continues with the received SeqNum.

Monitoring.AdminSessionDef.IntradayLogoutToleranceMode

Intraday logout tolerance mode.

An option to reset or not to reset sequence numbers after Logout.

Monitoring.AdminSessionDef.MaxMessagesAmountInBunch

Enqueued outgoing messages could be merged and sent as a single buffer.

This parameter controls how many messages could be merged into the bunch. The 0 means an infinite amount.

Monitoring.AdminSessionDef.Password

The expected value of the Password (Tag 554) field in the incoming Logon message.

If the real value is not equal to the expected one, the session is dropped without sending a message and the error condition is generated in the log output.

Monitoring.AdminSessionDef.SenderLocationID

SenderLocationID (tag 142) - assigned value used to identify specific message originator's location (i.e. geographic location and/or desk, trader).

Monitoring.AdminSessionDef.SocketOpPriority

The priority of the socket SendReceive operations.

Valid values:

  • EVEN (default) - share worker thread among all sessions in the Engine;
  • AGGRESSIVE_SEND - use a dedicated thread to send outgoing messages;
  • AGGRESSIVE_SEND_ASYNC - use a dedicated thread to send all outgoing messages to the queue without trying to send them to the socket first.
  • AGGRESSIVE_RECEIVE - use a dedicated thread to send outgoing messages;
  • AGGRESSIVE_SEND_AND_RECEIVE - use dedicated per-session threads to send and receive messages;
  • DIRECT_SEND - use the current thread for sending, if this would block, performs as "EVEN".

Monitoring.AdminSessionDef.SourceIPaddress

The expected IP address of a remote counterparty for administrative sessions.

If the real value is not equal to the expected one, then the connections are disconnected without sending a message and the error condition is generated in the log output.

Default value: 0.0.0.0 - listens to connections on all network interfaces for all IP addresses.

Global parameter for all monitoring sessions.

Monitoring.AdminSessionDef.ListenAddress

The IP address of the network interface accepting incoming connections for administrative sessions.

Default value: 0.0.0.0 - listens to connections at all network interfaces.

Monitoring.AdminSessionDef.TargetLocationIDDisableTCPBuffer

TargetLocationID_ (tag 143) - assigned value used to identify specific message destination's location (i.e. geographic location and/or desk, trader).

Monitoring.AdminSessionDef.TargetSubID

TargetSubID (tag 57) - assigned value used to identify a specific individual or unit intended to receive messages.

Monitoring.AdminSessionDef.Username

The expected value of the Username (Tag 553) field in the incoming Logon message.

If the real value is not equal to the expected one then the session is disconnected without sending a message and the error condition is generated in the log output.

Monitoring.AdminSessionNames

The list of administrative FIX sessions separated by a comma.

To set a property for a session in this list the user should add a property 'Monitoring.AdminSession.<session name>.<parameter name>', where <session name> is the name of the session from the list.

Monitoring.ListenPort

Info

Monitoring.ListenPort parameter is deprecated starting FIXEdge 6.12.0 and FIX Antenna 2.29.0.

The port on which FIX Engine accepts administrative FIX sessions. The name of this session starts with 'Monitoring'. 

If the port is configured, it will be added to the set of Engine listen ports, and administrative sessions will be accepted on this port only.
If the parameter does not exist or is empty, global Engine listen ports are used to accept administrative sessions.

Info

Does not support a secure connection. 

To enable SSL on Monitoring.ListenPort, the port number must be also added to the ListenSSLPort parameter.

Measuring.Enable

Enables/disables Engine measuring.

Valid values:

  • true - to enable Engine measuring;
  • false - to disable Engine measuring.

Default value: false

Monitoring.Enable

Enables/disables Engine monitoring.


...