...
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 'true', 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 | ||
---|---|---|
| ||
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).
|
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 if defines whether the Engine should accept repeating groups with a group size equal to '0' and no entries.
Valid values: true, false 'true' | 'false'
If set to ‘true’'true', FIX Engine will accept messages as is. Otherwise, If set to 'false' and the VerifyTagsValues parameter is set to 'false' then the empty group would will be removed from the message. Otherwise, the message will be rejected with the ERROR.
Default value: falsefalse
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 | ||
---|---|---|
| ||
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.
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
The properties of the device are in the "Log.<name>" section. For instance Log.File contains all properties of the File device.
Multiple devices can be chosen - the names of devices should be separated by a space in this case. E.g.: by setting Log.Device = File Log4Cplus
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:
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:
|
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:
|
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:
|
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:
|
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:
|
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.
...